Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript客户端:Websocket不工作?_Javascript_Events_Websocket_Client - Fatal编程技术网

Javascript客户端:Websocket不工作?

Javascript客户端:Websocket不工作?,javascript,events,websocket,client,Javascript,Events,Websocket,Client,我有一个PHP websocket(Ratchet 13),它工作得很好。我可以通过C#连接到此ws,没有任何问题。 现在,我想连接到我的websocket,但要使用javascript和客户端 在我的网站上,我希望客户端连接到我的websocket,并可以从服务器发送/接收实时数据。 实际上,连接成功,但从未调用事件。 编辑:页面加载几分钟后,我在控制台中看到: “到'ws://x:8080/'的WebSocket连接失败:WebSocket打开握手超时” 我试过很多方法 document.g

我有一个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
如果你有什么建议可以给我,我接受!
致以最诚挚的问候

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

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

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

我喜欢对否决票的解释,它帮助我知道如何改进我的答案,谢谢。