Здравствуйте! Технология WebSocket относительно новая и по этому информации даже в интернете по ней не много. Есть конечно официальные документации, но на английском. Даже прочитав в Википедии не все понятно. Единственное что понял, это то, что браузер и сервер должны вначале "пожать руки". Руки пожимают отправлением друг другу заголовков: Заголовок браузера: GET /demo HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: example.com Origin: http://example.com WebSocket-Protocol: sample Заголовок сервера: HTTP/1.1 101 Web Socket Protocol Handshake Upgrade: WebSocket Connection: Upgrade WebSocket-Origin: http://example.com WebSocket-Location: ws://example.com/demo WebSocket-Protocol: sample После "пожатия рук" соединение остается открытым и браузер общается с сервером на равных - происходит двусторонняя связь. Код на клиентской стороне тоже, в принципе, понятен: <html> <head> <script> var webSocket = new WebSocket('ws://localhost/echo'); webSocket.onopen = function(event) { alert('onopen'); webSocket.send("Hello Web Socket!"); }; webSocket.onmessage = function(event) { alert('onmessage, ' + event.data); webSocket.close(); }; webSocket.onclose = function(event) { alert('onclose'); }; </script> </head> <body> </body> </html> Так-сяк, вроде бы все и понятно. Но как именно это все работает - не могу понять. На компьютере (ОС - Windows XP) установлен Apache, PHP и MySQL - относительно серверной части, больше не установлено ничего. Имеются два файла: http://localhost/ws.php - соответствует клиенту http://localhost/wss.php - соответствует серверу Теперь о том что не понятно. I. Заголовки Как именно надо посылать эти заголовки? Правильно ли использовать такой код (клиент): <?php header("Get /demo HTTP/1.1"); header("Upgrade: WebSocket"); header("Connection: Upgrade"); header("Host: example.com"); header("Origin: http://example.com"); header("WebSocket-Protocol: sample"); ?> и, соответственно (сервер): <?php header("HTTP/1.1 101 Web Socket Protocol Handshake"); header("Upgrade: WebSocket"); header("Connection: Upgrade"); header("WebSocket-Origin: http://example.com"); header("WebSocket-Location: ws://example.com/demo"); header("WebSocket-Protocol: sample"); ?> II. Заголовок клиента 1. В строке GET /demo HTTP/1.1 что означает /demo и на что ее заменять? 2. Куда надо подставлять http:// и ws://, а так же куда подставлять localhost, ws.php и wss.php? III. Заголовок сервера 1. В строке WebSocket-Protocol: sample что означает sample и на что ее заменять? 2. Куда надо подставлять localhost, ws.php и wss.php? IV. Код на стороне клиента 1. В строке var webSocket = new WebSocket('ws://localhost/echo'); что означает echo и на что ее заменять? V. Код сервера и общение браузера с сервером На сайте Хабрахабр написано: "Как только одна сторона хочет передать другой какую-то информацию, она отправляет дата-фрейм следующего вида:" 0x00, <строка в кодировке UTF-8>, 0xFF 1. Всегда ли надо указывать 0xFF или это зависит от размера сообщения. Например, 0x00, <строка в кодировке UTF-8>, 0x18. 2. Правильно ли будет использовать для отправки сообщения, примерно, такой код: <?php $s = "Привет!"; $s = iconv("Windows-1251", "UTF-8", $s); echo "0x00, $s, 0xFF"; ?> Заключение Открываю в браузере (Firefox 11) http://localhost/ws.php - браузер выполняет команду alert('onclose'); Спасибо за внимание.