【发布时间】:2012-10-21 23:52:26
【问题描述】:
大家好,感谢您阅读本文。 我在服务器端使用带有 WS 模块的 NodeJS,在客户端在 Firefox 中使用 HTML5 WebSocket API。操作系统是windows 7 64位。每当我建立从客户端到服务器的连接时,连接都会立即形成,但是当我发送一些数据时会有很大的延迟。有时消息似乎会立即到达服务器,有时它们会在几秒钟甚至几分钟后到达,而大多数时候它们根本无法到达服务器。我正在从客户端和服务器端附加代码。如果有人可以帮助我,我将非常感激。
客户端代码
<!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,我建议用谷歌浏览器测试。它的 Devtools(ctrl+shift+j) 已集成到浏览器中,因此比 firefox+firebug 更可靠。我还建议将 websock 客户端代码包装在
window.onload = function(){}中;截至目前,您的代码在 DOM 准备好之前执行 -
我还建议从 websocket 构造函数之前删除
var。您的问题可能是在 onopen 事件触发之前 var 超出范围(并被垃圾收集)。 -
谢谢大家的回答。我最初的嫌疑人也是垃圾收集器,但我已经采取了所有预防措施,现在我认为这不是导致问题的原因。我还没有解决这个问题,但我认为它不是由我的客户端和服务器代码引起的。这可能是因为 node.js 是在 windows 环境中从命令提示符运行的。
标签: javascript html node.js websocket