WebSockets с проблемами PHP и JS URL

Я только сейчас пытаюсь разобраться в WebSockets. У меня есть настройка сервера с Ratchet в PHP. Я запускаю сервер из командной строки, и могу подключиться к нему просто прекрасно, используя «telnet localhost 8181» из пары других окон терминала, и они могут разговаривать друг с другом. Вот как выглядит этот код (real simple):

$server = IoServer::factory(
    new Chat(),
    8181
);
$server->run();

Итак, далее, я иду, чтобы попробовать его с веб-сайтом, используя этот код:

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8181
);
$server->run();

и для Javascript:

var url = 'wss://' + location.hostname + ':8181';
var ws = new WebSocket(url);
ws.onload...
ws.onmessage...

Но, никаким образом, что я структурирую URL, он всегда либо мгновенно дает мне ошибку, что-то вроде: «ошибка во время WebSocket рукопожатие: неожиданный код ответа: 200» или 500 или 404. Я также пробовал этот PHP код:

$app = new RatchetApp('mywebsiteurl.com', 8181);
$app->route('/chat', new Chat);
$app->route('/echo', new RatchetServerEchoServer, array('*'));
$app->run();

И по-прежнему ничего. Я использовал мой фактический URL-адрес веб-сайта и попробовал каждую комбинацию /echo и /chat в JS, но ничего не работало. Следует отметить, что я пытаюсь сделать это на веб-сайте, размещенном Bluehost. Если это просто прямо не возможно с хостинговой компанией, скажите, но я чувствую, что это так, потому что у меня есть доступ SSH и я могу бесконечно выполнять файл php сервера, плюс он прекрасно работает, когда просто делает это в PHP и подключается из других окон терминала.

Я проходил через этот учебник: http://socketo.me/docs/hello-world

1 ответ

  1. У меня была эта проблема раньше, но с конфигурацией Apache-PHP. Решение состояло в том, чтобы создать файл IPC, который слушал бы запросы WebSocket, и модуль Apache отвечал за их обработку. Всякий раз, когда сервер начал этот файл IPC должен был быть сгенерирован. Я не уверен, что это ваша проблема. Если это не так, то, пожалуйста, скажите мне, чтобы удалить мой ответ, однако, тот факт, что у вас есть проблемы с WebSocket рукопожатие означает, что на сервере вы чего-то не хватает, возможно, отдельное приложение, которое будет обрабатывать запросы WebSocket.