[英]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.