如何配置WebSocket服务器以接受安全连接请求

时间:2019-03-11 07:51:44

标签: laravel-5 websocket ratchet

在应用ssl(我从cloudflare取得)之前,我的网站是通过http加载的,而我的套接字连接是通过ws建立的 一切正常,连接成功。

  

conn = new WebSocket('ws:// myDomain:8090');

但是当我的网站通过https加载时应用ssl后,我使用wss(否则会出错)

  

conn = new WebSocket('wss:// myDomain:8090');

现在它给了我错误

  

与'wss:// myDomain:8090 /'的WebSocket连接失败:连接建立错误:net :: ERR_CONNECTION_TIMED_OUT

websocket服务器是通过8090端口启动的,我也将端口更改为9991,但无济于事。

这是Websocket服务器的代码

public function handle()
{
    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        8090
    );
    $server->run();
}

我未配置apache来运行websocket服务器以接受安全连接请求。可能是由于此原因导致我出错了。这意味着我正在向不安全的websocket服务器发送安全连接请求。如果我是对的,您能告诉我如何配置我的Websocket服务器,以便它可以接受安全连接请求。

我再次告诉您,我正在使用来自云技术的SSL。我告诉我自己的域名,他们为我提供了域名服务器,用我现有的域名服务器替换了域名服务器。

我要求您提供明确的解决方案以解决此问题。 我不使用nginx,而是在Lampp上使用apache。

2 个答案:

答案 0 :(得分:0)

Cloudflare不适用于端口8090here是cloudflare支持的端口列表。

还尝试http://sitemeer.com/#https://yourDomain:8090来查看您的服务器+域是否正在提供ssl

答案 1 :(得分:0)

有人解决了我的问题。因此,我在这里发布解决方案以帮助他人。我犯了两个错误。

  • 我正在使用cloudflare的SSL,这会引起一些问题。所以我买了付费的SSL证书。
  • 我没有为wss配置我的websocket服务器

这是使用Ratchet在Laravel中为wss配置websocket服务器的代码

public function handle()
{

    $loop   = Factory::create();
    $webSock = new SecureServer(
        new Server('0.0.0.0:8090', $loop),
        $loop,
        array(
            'local_cert'        => '', // path to your cert
            'local_pk'          => '', // path to your server private key
            'allow_self_signed' => TRUE, // Allow self signed certs (should be false 
                                            in production)
            'verify_peer' => FALSE
        )
    );
    // Ratchet magic
    $webServer = new IoServer(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        $webSock
    );
    $loop->run();

}