powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Связаться с сокетом
13 сообщений из 13, страница 1 из 1
Связаться с сокетом
    #39161989
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на основе уроков из сети написал вот такой код:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
window.onload = function()
{
	var label = document.getElementById("status");
	var message = document.getElementById("message");
	var btnSend = document.getElementById("send");
	var btnStop = document.getElementById("stop");
	
	var socket = new WebSocket("ws://echo.websocket.org");
	
	socket.onopen = function(event){
		label.innerHTML = "Соединились c сервером " + socket.url;
	};
	socket.onclose = function(event){
		label.innerHTML = "Соединение закрыто";
		
		var code = event.code;
		var reason = event.reason;
		var wasClean = event.wasClean;
		
		alert(wasClean);
		
		if(wasClean)
		{
			label.innerHTML = "Соединение закрыто корректно!";
		}
		else
		{
			label.innertHTML = "Соединение закрыто с ошибкой! Причина" + reason + " Код " + code;
		}
	};
	
	socket.onerror = function(event){
		console.log("error");
	};
	
	
    socket.onmessage = function(event){
		if(typeof event.data === "string")
		{
			label.innerHTML = event.data;
		}
	};
	
	btnSend.onclick = function(event) {
		if(socket.readyState === WebSocket.OPEN)
		{
			socket.send(message.value);
		}
	};
	
	btnStop.onclick = function() {
		if(socket.readyState === WebSocket.OPEN)
		{
			socket.close();
		}
	};
};



с тестовым сокетом связываюсь без проблем.

у меня есть хост(VPS) c доменом. открываю там поддомен. кладу туда файлик с кодом сокета на PHP.

меняю

Код: javascript
1.
var socket = new WebSocket("ws://echo.websocket.org");



на

Код: javascript
1.
var socket = new WebSocket("ws://поддемен.домен.info/socketServer.php");



соединение пытается открыться, но тут же закрывается с кодом 1006

к сокету надо както подругому обращаться или это на стороне PHP ошибки какие то?
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162252
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,

а что там в socketServer.php ?

поиск "websocket php" может помочь
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162332
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,
прежде всего сходи с той машины, где этот код запускается на указанный хост и порт с помощью telnet.
вот этот самый под домен домен, и номер порта из сервиса ws возми.

если соединение установится, можно думать далее.
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162402
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,
ws по 80 порту????
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162514
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
я лично не знаю...
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162516
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://tools.ietf.org/html/rfc6455
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
1.7.  Relationship to TCP and HTTP

   _This section is non-normative._

   The WebSocket Protocol is an independent TCP-based protocol.  Its
   only relationship to HTTP is that its handshake is interpreted by
   HTTP servers as an Upgrade request.

   By default, the WebSocket Protocol uses port 80 for regular WebSocket
   connections and port 443 for WebSocket connections tunneled over
   Transport Layer Security (TLS) [RFC2818].
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162608
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сети нащёл вот такой ответ

авторОказалось, это фича, а не баг. В коде (websocket.c):

if (cmd_is_subscribe(cmd)) {
r->keep_alive = 1;
}

Изменение этого параметра решило часть проблем

а где это фаил находится? На сервере?
и Что там должно быть 1 или 0?

в socketServer.php простенькид код, примерчик из сети
проверка через telnet вроде в порядке

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<?php
	ini_set('error_reporting', E_ALL);
	ini_set('display_errors', 1);
	ini_set('display_startup_errors', 1);

	set_time_limit(0);
	
	$host = "148.251.95.199";
	$port = 4096;
	
	if(extension_loaded('sockets')) echo "WebSockets OK";
    else echo "WebSockets UNAVAILABLE";

	$socket = socket_create(AF_INET, SOCK_STREAM, 0);

	$result = socket_bind($socket, $host, $port);

	$result = socket_listen($socket, 3);

	$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");

	$input = socket_read($spawn, 1024) or die("Could not read input\n");
	$input = trim($input);
	echo "Client Message : ".$input."
";
	$output = strrev($input) ."
";
	socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");

	socket_close($spawn);
	socket_close($socket);
?>
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162619
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton https://tools.ietf.org/html/rfc6455
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
1.7.  Relationship to TCP and HTTP

   _This section is non-normative._

   The WebSocket Protocol is an independent TCP-based protocol.  Its
   only relationship to HTTP is that its handshake is interpreted by
   HTTP servers as an Upgrade request.

   By default, the WebSocket Protocol uses port 80 for regular WebSocket
   connections and port 443 for WebSocket connections tunneled over
   Transport Layer Security (TLS) [RFC2818].


я б определился с портом , для начала,
потому как не понятно , кто слушает 80 порт на сервере...
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39162685
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не спорю по сабжу но просто дополняю.

Тут достаточно доходчиво пишут почему 80/443 желательны для инфраструктуры ws.
Опять-же это не есть требование для автора. Скорее просто пожелания чтоб делать именно так.

http://stackoverflow.com/questions/28522857/shall-i-use-websocket-on-ports-other-than-80
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39163586
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе спорю по сабжу но просто дополняю.

Тут достаточно доходчиво пишут почему 80/443 желательны для инфраструктуры ws.
Опять-же это не есть требование для автора. Скорее просто пожелания чтоб делать именно так.

http://stackoverflow.com/questions/28522857/shall-i-use-websocket-on-ports-other-than-80

не совсем понял, что там , но у тс
у меня есть хост(VPS) c доменом. открываю там поддомен. кладу туда файлик с кодом сокета на PHP.
поэтому порт 80 скорее всего занят.
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39163738
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем он занят? Если честно я невкурсе как реализован WebSocket на PHP.

Если кодинг на PHP исключает листенер вебсокета на том-же самом порту - то ты прав.
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39164076
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧем он занят? Если честно я невкурсе как реализован WebSocket на PHP.

Если кодинг на PHP исключает листенер вебсокета на том-же самом порту - то ты прав.
по умолчанию все сайты слушают 80 порт. я не представляю как две независимых проги могут сидеть на одном порту, без допонительного обработчика…
...
Рейтинг: 0 / 0
Связаться с сокетом
    #39164278
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор а есть-ли возможность сделать так на PHP?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
        $host = "148.251.95.199";
	$port = 80;
	
	if(extension_loaded('sockets')) echo "WebSockets OK";
    else echo "WebSockets UNAVAILABLE";

	$socket = socket_create(AF_INET, SOCK_STREAM, 0);

	$result = socket_bind($socket, $host, $port);
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Связаться с сокетом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]