HTML 5 веб-сокеты - PullRequest
       17

HTML 5 веб-сокеты

0 голосов
/ 09 сентября 2011

Хорошо, я прочитал миллион учебников, и в разделе комментариев всегда найдется кто-то, кто задает то же самое, что и то, что я сейчас испытываю, и никакого реального ответа не дано, и просто чтобы уточнить, да, я использую последниеверсия chrome, на которой работают веб-сокеты.

Я получаю сообщение об ошибке "Отключено", как только страница загружается.

во-первых, я запускаю PHP 5 на IIS (не мой выбор)

Я скачал http://bohuco.net/dev/websocket/?source=WebSocketServer.php

и пытаюсь проверить http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/.

Расположение загруженных файлов находится по адресу www.something.co.uk/html5/.test

, который включает в себя демонстрационные файлы выше, а также php.

веб-сокета. Я запутался в том, как // Соединяется с сервером

var server = new ServerEventsDispatcher("<someip>:12345");

с server.php, расположенным в пути к файлу выше.

могу ли я добавить домен и URL в часть someip?

Любая помощь по этому вопросу высоко ценится.

РЕДАКТИРОВАТЬ

после некоторого прочтения появляетсячто я могу.

http://dev.w3.org/html5/websockets/

var socket = new WebSocket('ws://game.example.com:12010/updates');
socket.onopen = function () {
  setInterval(function() {
    if (socket.bufferedAmount == 0)
      socket.send(getUpdateData());
  }, 50);
};

Так что мой следующий вопрос (поскольку это все еще не решает ситуацию)

в файле server.php, этолокальный хост действителен или это должен быть IP / домен?

$server = new WebsocketServer('localhost', 12345, 'process');

РЕДАКТИРОВАТЬ

Я изменил подключение к веб-сокету на

//Connect to the server
var server = new ServerEventsDispatcher("domain.co.uk:81/path/to/server.php");

и изменил порт в scripts.php на 81 и до сих пор ничего ...

1 Ответ

2 голосов
/ 09 сентября 2011

Класс WebSocketServer, который вы связали, запускает указанный Сервер на порту, указанном при создании объекта. Обратите внимание, что этот порт не может совпадать с вашим веб-сервером по очевидным причинам.

Сторона javascript должна открыть WebSocket для этого сервера, при условии, что ServerEventsDispatcher внутренне открывает новый WebSocket на ws: //: 12345 / вам необходимо добавить имя хоста или IP-адрес сервера, на котором работает WebSocketServer, с помощью правильный номер порта там.

Итак, скажем, WebSocketServer работает на someserver.domain.com через порт 81 (поскольку 80, скорее всего, используется IIS):

var server = new ServerEventsDispatchet("someserver.domain.com:81");

Глядя на код для этого класса javascript, он фактически открывает WebSocket, используя адрес напрямую; поэтому вы также можете использовать ws://someserver.domain.com:81 там, если хотите указать протокол (или wss для SSL).

Редактировать в продолжение вашего редактирования: Я бы использовал публичный адрес вашего сервера в этом классе WebSocketServer; как он будет пытаться связать это:

socket_bind($this->master, $this->address, $this->port) or die("socket_bind() failed");

см. Также: http://nl3.php.net/manual/en/function.socket-bind.php

В дополнение к вашему последнему редактированию:

вы не должны добавлять путь к вашему php-скрипту. Когда вы открываете свой PHP-скрипт, он должен попытаться открыть этот сервер WebSocket; но сервер веб-сокета просто будет работать на "ws://<servername>:<port>". Таким образом, в javascript вы можете использовать его как адрес, а затем перейти к php-скрипту в вашем браузере для тестовой программы.

- Изменить для использования сервером -

Так как это станет слишком длинным / нечитаемым в комментарии; в зависимости от сайта вы должны использовать командную строку php для фактического запуска класса сервера:

"Откройте окно терминала (Командная строка на окнах) и перейдите в каталог вашего проекта. Выполните скрипт на PHP и, если все пойдет по плану, вы получите следующее сообщение:"

$ php -f server.php
Server Started : 2010-05-26 22:40:03
Listening on   : localhost port 12345
Master socket  : Resource id #5

Когда это будет сделано; сервер должен быть включен и прослушивать. Затем вы можете подключиться к этому серверу, используя WebSocket в javascript с URL-адресом websocket, как указано выше:)

...