You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ratchet WebSocket安全环境下无法连接问题求助

Windows服务器下Ratchet WebSocket WSS连接失败问题

在Windows服务器项目中使用Ratchet WebSocket,非安全环境运行完全正常:访问http://www.example.com时,通过ws://连接8686端口的WebSocket服务器无任何问题。服务器并非通过IIS运行,而是通过命令行执行启动:

php wsocket-server.php [...parameters...]

但启用Ratchet服务器的SSL配置后,从https://www.example.com尝试通过wss://连接时,浏览器无法建立WebSocket连接——尽管服务器启动正常,且非安全站点仍可通过ws://正常连接。

已添加的SSL相关配置代码如下:

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;

$websocket_server = new WsServer();

if ($site_secure){
   //RUN WSS (SECURE) SERVER
    $options = [
        'local_cert'        => 'c:\inetpub\ssl\2c6fa1928847451c.crt',
        'local_pk'          => 'c:\inetpub\ssl\2c6fa1928847451c.key',
        'allow_self_signed' => true,
        'verify_peer'       => false
    ];
    
    $loop = React\EventLoop\Factory::create();
    $websocket_server->enableKeepAlive($loop);
    $app = new HttpServer($websocket_server);

    $insecure_websockets = new \React\Socket\Server('0.0.0.0:'.$port, $loop);
    $secure_websockets = new \React\Socket\SecureServer($insecure_websockets , $loop, $options);
    $secure_websockets_server = new \Ratchet\Server\IoServer($app, $secure_websockets, $loop);

    $secure_websockets_server->run();
}else{    
   //RUN WS (INSECURE) SERVER
    $http_server = new HttpServer($websocket_server);
    $server = IoServer::factory($http_server, $port);
    $websocket->log ("Initializing ".(($site_secure) ? "Secure " : "Insecure ").("Server ($port)"));
    $server->run();
}

已尝试的解决措施:

  • 确认Windows防火墙已开放对应端口
  • 使用netstat确认端口未被其他进程占用
  • 尝试过nginx反向代理,但存在启动问题,更希望使用Ratchet原生能力
  • 查阅过相关问题帖
  • 尝试过多个端口,包括非安全环境使用的8686端口

该问题已困扰两周,寻求解决帮助。

内容的提问来源于stack exchange,提问作者Dutchie432

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:24:14