Javascript 如何实现WebSocket与启用SSL的服务器通信?

Javascript 如何实现WebSocket与启用SSL的服务器通信?,javascript,jquery,ssl,websocket,Javascript,Jquery,Ssl,Websocket,我正在尝试在客户端“web浏览器”和运行在Windows2008R2上的Apache2.4/PHP5.6服务器之间实现WebSocket通信 假设我的应用程序正在这个URL“HTTPS”上运行 https://myApllication.example.com 我不确定在服务器上是否需要安装一些东西才能正常工作 到目前为止,我的代码是这样的 $(function(){ if(!("WebSocket" in window)){ console.log('your bro

我正在尝试在客户端“web浏览器”和运行在Windows2008R2上的Apache2.4/PHP5.6服务器之间实现WebSocket通信

假设我的应用程序正在这个URL“HTTPS”上运行
https://myApllication.example.com

我不确定在服务器上是否需要安装一些东西才能正常工作

到目前为止,我的代码是这样的

$(function(){
    if(!("WebSocket" in window)){

        console.log('your browser does not support WebSocket'); 
    } else {

        connect();

        $('#disconnect').click(function(){
            socket.close();
        });
    }


    function connect(){
            var socket;
            var host = "ws://myApplication.example.com:8000/dev/icws/poll2.php";

            try{
                var socket = new WebSocket(host, {
                    protocolVersion: 13, 
                    origin: 'https://www.example.com'
                });
                message('Socket Status: '+socket.readyState);
                socket.onopen = function(){
                    message('Socket Status: '+socket.readyState+' (open)'); 
                }

                socket.onmessage = function(msg){
                    message('Received: ' + msg.data);                   
                }

                socket.onclose = function(){
                    message('Socket Status: '+ socket.readyState + ' (Closed)');
                }           

            } catch(exception){
                message(exception);
            }
        } //End connect()   

        function message(msg){
            console.log(msg);
        }//End message()


    });
此代码将在控制台中显示此错误

DOMException [SecurityError: "The operation is insecure."
code: 18
nsresult: 0x80530012
Socket Status: 0 (ready)
Socket Status: 3 (Closed)
Firefox can't establish a connection to the server at wss://myApplication.example.com:8000/dev/icws/poll2.php
下面是我的poll2.php脚本的样子

<?php
    header("Content-Type: text/event-stream" . PHP_EOL);
    header("Cache-Control: no-cache" . PHP_EOL);

    echo "data: {mykey: 'myvalue', eventName: 'eventName'}" . PHP_EOL . PHP_EOL;

?>

我不再得到安全性错误,但我在控制台中得到了它

DOMException [SecurityError: "The operation is insecure."
code: 18
nsresult: 0x80530012
Socket Status: 0 (ready)
Socket Status: 3 (Closed)
Firefox can't establish a connection to the server at wss://myApplication.example.com:8000/dev/icws/poll2.php
是什么原因导致无法建立连接?
是否必须打开服务器上的端口8000?

您正在尝试在没有TLS的情况下连接WebSocket。将“ws://myApplication.example.com:8000更改为
”wss://myApplication.example.com:8000
。您的问题中没有足够的细节(服务器是什么?)来知道它是否足够(可能不是正确的端口)。@DenysSéguret非常感谢您,我不再了解错误。但在这里,我仍然得到在控制台<代码>Firefox无法在上建立与服务器的连接wss://......我是否必须更改我的php脚本?您正在尝试在没有TLS的情况下连接WebSocket。将“ws://myApplication.example.com:8000更改为
”wss://myApplication.example.com:8000
。您的问题中没有足够的细节(服务器是什么?)来知道它是否足够(可能不是正确的端口)。@DenysSéguret非常感谢您,我不再了解错误。但在这里,我仍然得到在控制台<代码>Firefox无法在上建立与服务器的连接wss://......我是否必须更改我的php脚本?