WebSocket:失败:WebSocket握手期间出错:net :: ERR_INVALID_HTTP_RESPONSE

时间:2018-06-30 22:35:37

标签: websocket symfony4 ratchet

我想学习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>

我得到这个错误:

  

聊天:8与“ ws:// localhost:8080 /”的WebSocket连接失败:WebSocket握手期间出错:net :: ERR_INVALID_HTTP_RESPONSE   (匿名)@ chat:8

这是运行服务器的Command的代码:

<?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();
}

0 个答案:

没有答案