WebSocket: сбой: ошибка во время квитирования WebSocket: net :: ERR_INVALID_HTTP_RESPONSE - PullRequest
0 голосов
/ 01 июля 2018

Я собираюсь узнать о webSocket, поэтому я использую библиотеки Symfony и Ratchet.

Я следовал документации Ratchet, я создал класс Chat и сервер. Все работает нормально, когда я тестирую в консоли linux , соединения устанавливаются и сообщения отправляются всем подключенным клиентам.

Но когда я помещаю этот код JavaScript в файл ветки, чтобы проверить его в браузере:

<body>
<h1>Websokets chat</h1>


<script>
var conn = new WebSocket('ws://localhost:8080');
conn.onopen = function(e) {
    console.log("Connection established!");
};

conn.onmessage = function(e) {
    console.log(e.data);
};

</script>
</body>

Я получил эту ошибку:

chat: 8 Сбой подключения WebSocket к 'ws: // localhost: 8080 /': ошибка при рукопожатии WebSocket: net :: ERR_INVALID_HTTP_RESPONSE (анонимно) @ chat: 8

Это код команды запуска сервера:

<?php
namespace App\Command;

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Ratchet\Server\IoServer;
use App\Server\Chat;

class ChatServerCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this
            ->setName('hous:app:chat-server')
            ->setDescription('Start chat server');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $server = IoServer::factory(
            new Chat(),
            8080,
            '127.0.0.1'
        );
        $server->run();
    }
}

РЕШИТЬ:

Я изменил код внутри сервера следующим образом:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new Chat()
            )
        ), 8080);

    $server->run();
}
...