【问题标题】:Javascript client: Websocket not working?Javascript 客户端:Websocket 不工作?
【发布时间】:2019-01-17 01:26:29
【问题描述】:

我有一个 PHP websocket (Ratchet 13),它工作正常。我可以毫无问题地通过 C# 连接到这个 ws。 现在,我想在客户端连接到我的 websocket,但使用 javascript。

在我的网站上,我希望客户端连接到我的 websocket,并可以从服务器发送/接收实时数据。 实际上连接成功,但从未调用事件。 编辑:几分钟后页面加载,我在控制台中有这个: “与 'ws://x:8080/' 的 WebSocket 连接失败:WebSocket 打开握手超时”

我尝试了很多方法。

document.getElementById("value_ws").innerHTML = "coning";
//just some cheks 1

var ws = new WebSocket("ws://localhost:8080"); 
//here i replace localhost by my IP otherwise it don't connect

ws.onopen = function(e) {
    console.log("open");
};

ws.addEventListener('open', function (event) {
    ws.send('Hello Server!');
});

//both of theses events are never called
//i successfully receive the connection on my server ws console
//but when i send data, the event is never called   

document.getElementById("value_ws").innerHTML = "coned";
//just some cheks 2

如果你有一些建议可以给我,我接受! 最好的问候

【问题讨论】:

    标签: javascript events websocket client


    【解决方案1】:

    已解决: 问题来自我的服务器,它没有响应握手。

    <?php
    use Ratchet\Server\IoServer;
    use Ratchet\Http\HttpServer;
    use Ratchet\WebSocket\WsServer;
    use MyApp\Chat;
    
        require dirname(__DIR__) . '/vendor/autoload.php';
    
        $server = IoServer::factory(
            new HttpServer(
                new WsServer(
                    new Chat()
                )
            ),
            8080
        );
    
        $server->run();
    

    【讨论】:

      【解决方案2】:

      某些浏览器不允许您连接到不安全的 websocket。您需要启用 SSL/TLS 并使用“wss://localhost:8080”作为连接进行测试。

      【讨论】:

      • 喜欢对否决票的解释,它可以帮助我知道如何改进我的答案,谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2013-06-12
      相关资源
      最近更新 更多