保持node.js服务器到客户端连接的打开是一个坏主意还是总体上不好的性能?(不使用x.end();)。
我正在尝试使用node.js,这是我想做的事情:这是我要做的:使用node.js可执行文件作为多客户端相互通信的开放句柄,这是什么?到目前为止,我所做的只是为了进行测试,就是创建一个HTTP服务器,从某种意义上说,它间隔5000ms编写“测试”。而且由于有与客户永远保持沟通直到断开连接的想法,所以我看不到自己会结束。
var http = require("http"),
date = require("./modules/date.js");
var server = http.createServer(function(request, response) {
console.log("[" + date.currentTimestamp() + "] Receiving a connection from " + server.address().address);
response.writeHead(200, {"Content-Type": "text/html"});
response.write("Hello World!<br>Current time: " + date.currentTimestamp() + "<br>Current url: " + request.url);
setInterval(function() {
response.write(" test");
}, 5000);
}).listen(80);
console.log("[" + date.currentTimestamp() + "] Server has initialized.");
这个想法还不错,您只是重新发明了长时间轮询:)它是服务器-客户端交互的一种模式,已广泛用于发送服务器事件。它是这样工作的:1.客户端通过连接到服务器来订阅某些事件。2.服务器使连接保持尽可能长的打开时间。3.如果在连接打开时触发事件,则服务器将使用事件有效负载和元数据进行响应并关闭连接。4.如果没有事件触发,则连接将在一段时间后关闭,以避免将资源浪费在不活动的客户端上。5.在这两种情况下,客户端都会重新连接,并期望发生进一步的事件。
在引入websocket之前就发明了长时间轮询。虽然websocket仅设计用于长期的客户端-服务器事件交换,但长时间轮询更是一种技巧。最好的主意是将websocket用于支持它的浏览器,而对那些不支持的浏览器使用长时间轮询。某些套接字(例如socket.io)可以自动做到这一点,顺便说一句。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句