簡體   English   中英

無法連接到websocket

[英]Unable to connect to a websocket

我使用Ratchet創建了一個PHP websocket。 此Websocket正在我的內部服務器10.0.4.160端口8080上運行。

我試圖從一個啟用了SSL“又名使用https協議”的網站連接到它。

當嘗試從FireFox瀏覽器連接到websocket時,我從瀏覽器中得到安全問題,因為我在安全/非安全連接之間混合。 這是我在javascript控制台中看到的錯誤。

SecurityError:操作不安全。

為了解決安全問題,我創建了一個stunnel代理,它允許我接受10.0.4.160:58443連接並將其連接到端口127.0.0.1:8080 這個安全隧道應該允許我保持與websocket的連接,並繞過瀏覽器的安全檢查。

但是,每次我嘗試連接到websocket時都會出錯

與'wss://10.0.4.160:58443 /'的WebSocket連接失敗:連接建立錯誤:net :: ERR_TIMED_OUT

這是用於連接websocket的jQuery腳本

<script>

    $(function(){
        if ("WebSocket" in window)
        {
            var conn = new WebSocket('wss://10.0.4.160:58443');

            conn.onopen = function(e) {
                console.log("Connection established!");
                showMessage('Connected', 0);
            };

            conn.onmessage = function(e) {
                console.log(e.data);
                showMessage(e.data, 1);
            };

            conn.onclose = function(e) {
                console.log(e.code);
                console.log(e.reason);
            };              

            conn.onerror = function(e) {
                console.log(e);
            };      

        } else {
            console.log('Your browser does not support Websocket!');
        }

        function showMessage(msg, append){
            if(append){
                $('#status').append('<br>' + msg);
                return;
            }

            $('#status').text(msg);
        }
    });

</script>

這是我目前的stunnel配置

[websockets]
client = yes
accept = 58443
connect = 8080
verify = 2
CAfile = ca-certs.pem
debug = 7
OCSPaia = yes

如何從瀏覽器連接到websocket? 謝謝

http://www.html5rocks.com/en/tutorials/websockets/basics/上閱讀有關html5 websockets的更多信息

Socket.io是一個流行的Web套接字庫,請訪問www.socket.io

沒有足夠的信息來診斷您的問題。 請提供服務器日志。

  • 您的服務器是否識別連接嘗試?
  • 您的服務器是否處理客戶端服務器握手?

如果您的服務器識別出連接嘗試,則您的問題很可能是握手。 您的JavaScript沒有問題。


額外的信息:

另一種類型的連接:(我們將這種類型稱為1)

|SERVER(PHP)| <--- CONNECTION --> |SERVER(websocket)|

你在用什么:(我們稱之為2型)

|BROWSER(client)| <----CONNECTION --> |SERVER(websocket)|

當使用類型1連接作為類型2連接時,您可能會溢出主Web服務器,這將導致服務器性能問題。 網絡主機如:Godaddy,Hostgator ......等將終止充斥其服務器的連接,因為它們被視為DDOS攻擊。

我不知道棘輪是什么,但為了保持服務器和客戶端連接打開PHP將需要保持打開,這絕不是永遠不會有一個好主意。 研究用C#或C ++等語言創建服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM