Я собираюсь узнать о 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();
}