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

问题描述 投票:1回答:2

在应用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。

laravel-5 websocket ratchet
2个回答
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();

}

0
投票

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

还可以尝试使用http://sitemeer.com/#https://yourDomain:8090查看您的服务器+域是否正在服务ssl

© www.soinside.com 2019 - 2024. All rights reserved.