大家好,感謝您閱讀本文。 我在服務器端使用帶WS模塊的NodeJS,在客戶端使用Firefox中的HTML5 WebSocket API。操作系統是Windows 7 64位。每當我從客戶端連接到服務器時,連接即時形成,但是當我發送一些數據時,會有很大的延遲。有時候,這些消息似乎會立即到達服務器,有時甚至幾秒甚至幾分鐘就會到達服務器,而且大部分時間都無法到達服務器。我附上了客戶端和服務器端的代碼。如果有人能幫助我,我會非常感激。帶nodejs的HTML5 websocket中的通信延遲
客戶端代碼
<!doctype html>
<html>
<head>
<script>
var ws = new WebSocket("ws://localhost:5225");
ws.onopen = function(){
alert("Sending");
ws.send("SOME DATA !");
}
</script>
</head>
<body>
</body>
</html>
服務器端代碼
var WebSocketServer = require('./ws').Server;
var wss = new WebSocketServer({port:5225});
var ws;
wss.on('connection',function (wsock){
console.log("Connection Recieved");
ws = wsock;
ws.on('message',onnMessage);
ws.on('close',onnClose);
});
function onnMessage(data){
console.log("Data Recieved : "+data);
}
function onnClose(){
console.log("Connection closed");
}
您是否嘗試過使用127.0.0.1,並且建議您使用Google Chrome進行測試。它的Devtools(ctrl + shift + j)被集成到瀏覽器中,所以更可靠的說firefox +螢火蟲。我還建議將websock客戶端代碼包裝在'window.onload = function(){}';截至目前您的代碼在DOM準備好之前正在執行 – SReject
我還建議從websocket構造函數之前刪除'var'。你發出的問題可能是在onopen事件觸發之前,var會超出範圍(並收集垃圾)。 – SReject
謝謝大家回答。我最初的嫌疑人也是垃圾收集者,但我已經採取了所有預防措施,現在我不認爲這是造成問題的原因。我還沒有解決這個問題,但我不認爲它是由我的客戶端和服務器代碼引起的。這可能是因爲node.js在Windows環境中從命令提示符運行。 –