Я скачал исходники модуля mod_websocket и собрал в модуль, в /etc/apache2/mods-available/ создан файл websocket.load:
LoadModule websocket_module /usr/lib/apache2/modules/mod_websocket.so
а также на него есть ссылка в /etc/apache2/mods-enabled.
phpinfo() показывает, что модуль загружен.
Подскажите пожалуйста: что еще необходимо сделать, чтоб заработал сервер, или этого достаточно? Где указан порт, по которому необходимо подключаться?
Тестирую таким нехитрым скриптом:
<?php
error_reporting(E_ALL);
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', str_replace('\\', DS, $_SERVER['DOCUMENT_ROOT']) . DS);
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript">
try {
ws = new WebSocket('ws://<?php echo $_SERVER['SERVER_NAME'] ?>:80/handler.php'); // без указания порта тоже не работает
ws.onopen = function() { alert("Соединение открыто...") };
ws.onclose = function() { alert("Соединение закрыто...") };
ws.onmessage = function(evt) { $("#msg").append("<p>"+evt.data+"</p>"); };
}
catch (e) {
alert('Технология WebSocket недоступна :(')
}
</script>
<title>WebSocket Test</title>
</head>
<body>
<div id="msg"></div>
</body>
</html>
в обработчике handler.php:
<?php echo chr(0x00) . "Hello World!!!" . chr(0xff) ?>
В результате запуска выдает "Соединение закрыто..."
Firebug выдает ошибку
Firefox can't establish a connection to the server at ws://test:80/handler.php.
ws = new WebSocket('ws://test/handler.php');
В Chromium'е показывает, что был GET-запрос к обработчику:
Request URL:ws://test/handler.php
Request Headers
Connection:Upgrade
Host:test
Origin:http://test
Sec-WebSocket-Key1:2 ' $ ib889'? 86 f +7<91;2 o u
Sec-WebSocket-Key2:419d 1 75 485 2
Upgrade:WebSocket
(Key3):58:56:86:40:D5:F5:AF:68
ошибка:
Unexpected response code: 200
_____________
Профессиональная разработка на заказ
Я на GitHub | второй профиль