大家好,感谢您阅读本文。 我在服务器端使用带有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");
}
答案 0 :(得分:0)
我目前无法测试,但我认为问题是你的websocket变量(ws
)超出了.onopen()
事件的范围,或者垃圾收集器正在释放变量在事件发生之前。要解决此问题,请将套接字创建为全局(或全局范围内的对象):
<script>
window.ws = new WebSocket("ws://localhost:5225");
ws.onopen = function (){
alert("Sending");
ws.send("SOME DATA !");
}
</script>
答案 1 :(得分:0)
要访问ws
处理程序中的onopen
对象,请使用this
引用,如下所示:
ws.onopen = function (){
alert("Sending");
this.send("SOME DATA !");
}
答案 2 :(得分:0)