2012-04-24 2 views
0

Я пытаюсь попасть в новый мир веб-сокетов, но я ничего не могу сделать.Не могу заставить сокеты работать - что за глупость я пропущу?

Я загрузил и попробовал несколько серверов сокетов PHP, но без радости. Они кажутся очень скудными по пошаговой информации о том, что делать, чтобы фактически получить то, что работает на вашем собственном сервере.

Я передаю путь к серверному скрипту в качестве первого аргумента для нового WebSocket() - например. 'WS: // локальный: 33/розетки/server.php'. Это правильно?

Должен ли я проходить что-либо в качестве второго параметра? Я читал, но я не совсем уверен.

Любая помощь приветствуется.

ответ

0

Путь, который вы передаете в WebSockets, не имеет никакого отношения к фактическому пути в файловой системе.
Когда WebSocket подключается к серверу, он использует фактический адрес «localhost» в вашем случае и порт «33». Затем в HTTP-запросе при установлении связи он получит данные «путь», которые «/sockets/server.php» в вашем случае, и поместит их в рукопожатие, поэтому первая строка рукопожатия будет выглядеть так:

GET /sockets/server.php HTTP/1.1 

Поэтому он будет использоваться вами приложением, чтобы решить, что с ним делать. Если вы хотите использовать его и сделать его похожим на фактические файлы или использовать его по-своему.

Here - это некоторая информация из RFC 6455 на URI WebSockets.

Как не использовать порт 33, как это может быть принято службой dsp. Проверьте карту портов here.
Если вы привязываете WebSocket на стороне сервера к порту 33, он должен продолжить соединение.

После того, как установлено соединение уровня TCP, оно должно пройти через HTTP-запросы, которые являются Handshaking.

После этого и успех. JavaScript на стороне клиента будет вызывать onopen callback. Если что-то пошло не так, это вызовет террор и закрытые события.

После того, как соединение успешно установлено, и WebSocket выполнил обмен сообщениями. Клиент получает необработанную строку как сообщение или двоичную (если сервер отправляет двоичные данные, сообщение с конкретным кодом операции). Но сервер будет получать данные с кадрированием и некоторым заголовком. Браузеры автоматически применяют дефрагментацию, поэтому на стороне клиента вам не нужно беспокоиться об этом. Но на стороне сервера вы должны сделать это самостоятельно или использовать некоторые существующие библиотеки для обработки этого для вас.

Настоящий официальный документ протокола WebSockets: RFC 6455. Он содержит всю информацию, необходимую вам для изучения всех аспектов протокола WebSockets.

В то же время вам может быть интересно изучить готовые решения. И рассмотрите их примеры.

+0

Спасибо, Максим. Это ваше первое предложение, которое я не совсем понимаю. Я видел такие вещи, как WebSocket («localhost/path/to/file.php»), поэтому, похоже, он указывает на файл. Я пробовал готовые примеры, но они, конечно, требуют от вас изменить настройки re: host, path, port и т. Д., И я не понимаю, и они, похоже, не объясняют. – Utkanos

+0

Я добавил некоторую информацию, описывающую, каков ваш путь в верхней части ответа. Надеюсь, это даст понять. – moka

+0

Еще раз спасибо, Максим. Боюсь, я все еще немного потерял.1) Большинство блогов/учебников по этому поводу об использовании консоли PHP - это необходимо? 2) Шаг 2 из [этого довольно неопределенного учебника] (http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/) говорит: «Измените сервер в соответствии с вашими настройками», не говоря о том, что это на самом деле означает, например какой порт я должен указать? 3) Я попытался установить исходные файлы этого учебника, и я не мог понять, что изменить, и к чему, чтобы заставить что-нибудь работать. Сожалею... – Utkanos

Смежные вопросы