首页 > 解决方案 > Socket 不能从外部网络工作(PHP+JS+Apache+SSL+Linux)

问题描述

无法从外部网络连接到套接字。从局域网一切正常。我忘记了什么?在互联网上找不到提示:(

我的 PHP 服务器连接:

    $host = 'external_ip'; //also tried: 0.0.0.0, local_ip, domain
    $port = 9000;
    $path = '/etc/ssl/private/domain.com/';
    $transport = 'tlsv1.3';
    $ssl = ['ssl' => [
        'local_cert'  => $path . 'domain.com.cer',
        'local_pk'    => $path . 'domain.com.key',
        'disable_compression' => true,
        'verify_peer'         => false,
        'ssltransport' => $transport
    ]];
    $ssl_context = stream_context_create($ssl);
    $server = stream_socket_server($transport . '://' . $host . ':' . $port, $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $ssl_context);
    
    ....

JS:

var wsUri = "wss://domain.com:9000/server.php";
websocket = new WebSocket(wsUri);

局域网 - 运行良好

外部网络 - 不是(Chrome 控制台:“到 'wss://domain.com:9000/server.php' 的 WebSocket 连接失败:”)

最好的问候马切伊

标签: javascriptphpwebsocket

解决方案


推荐阅读