Javascript 在node.js中保持服务器-客户机响应连接打开并处于活动状态是否不好?

Javascript 在node.js中保持服务器-客户机响应连接打开并处于活动状态是否不好?,javascript,node.js,Javascript,Node.js,保持node.js服务器到客户端的连接处于打开状态是一个坏主意还是总体性能不佳?不使用x.end 我正在尝试使用node.js,了解其中的诀窍,这就是我要做的: 使用node.js可执行文件作为多个客户端相互通信的开放句柄,到目前为止,我所做的只是测试一下,创建一个HTTP服务器,从某种意义上讲,它的编写测试间隔为5000ms。由于我有一个想法,就是在客户机断开连接之前永远与客户机通信,所以我看不到自己结束了这个句柄 var http = require("http"), date =

保持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.");

HTTP协议是一种请求-响应模式。在谈话中,一个人说一件事,另一个人回应。代码可以工作,但是协议没有按照设计的方式使用。实现目标的更好的方法是使用一个新的方法。WebSocket的设计目的是保持打开状态并来回传输数据,以实现长期连接。

HTTP协议是一种请求-响应模式。在谈话中,一个人说一件事,另一个人回应。代码可以工作,但是协议没有按照设计的方式使用。实现目标的更好的方法是使用一个新的方法。WebSocket的设计目的是保持开放并来回传输数据,以实现长期连接。

这个想法并没有那么糟糕,您只是重新发明了长轮询: 它是一种服务器-客户机交互模式,已广泛用于发送服务器事件。这就是它的工作原理: 1.客户端通过连接到服务器订阅某些事件。 2.服务器尽可能长时间保持连接打开 3.如果在连接打开时触发事件,服务器将使用事件负载和元数据进行响应,并关闭连接。 4.如果未触发任何事件,则连接将在一段时间后关闭,以避免在非活动客户端上花费资源。 5.在这两种情况下,客户端都会重新连接,并期望发生更多事件


长轮询是在websocket引入之前发明的。虽然WebSocket只是为长期存在的客户机-服务器事件交换而设计的,但长轮询更像是一种技巧。最好的办法是对支持websocket的浏览器使用websocket,对不支持websocket的浏览器使用长轮询。有些库(如socket.io)可以自动执行此操作,顺便说一句。

这个想法并没有那么糟糕,您只是重新发明了长轮询: 它是一种服务器-客户机交互模式,已广泛用于发送服务器事件。这就是它的工作原理: 1.客户端通过连接到服务器订阅某些事件。 2.服务器尽可能长时间保持连接打开 3.如果在连接打开时触发事件,服务器将使用事件负载和元数据进行响应,并关闭连接。 4.如果未触发任何事件,则连接将在一段时间后关闭,以避免在非活动客户端上花费资源。 5.在这两种情况下,客户端都会重新连接,并期望发生更多事件


长轮询是在websocket引入之前发明的。虽然WebSocket只是为长期存在的客户机-服务器事件交换而设计的,但长轮询更像是一种技巧。最好的办法是对支持websocket的浏览器使用websocket,对不支持websocket的浏览器使用长轮询。有些库,比如socket.io,可以自动实现这一点,顺便说一句。

将要提到的是,使用socket协议可能最适合管理OP的意图。将要提到的是,使用socket协议可能最适合管理OP的意图。