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

克里斯·梅勒

保持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.");
基特·伊萨夫(Kit Isaev)

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

在此处输入图片说明

在引入websocket之前就发明了长时间轮询。虽然websocket仅设计用于长期的客户端-服务器事件交换,但长时间轮询更是一种技巧。最好的主意是将websocket用于支持它的浏览器,而对那些不支持的浏览器使用长时间轮询。某些套接字(例如socket.io)可以自动做到这一点,顺便说一句。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Node.js,如何在客户端退出后使服务器保持活动状态?

(Restify,ReactJS,Node.js) Socket.io 客户端状态断开,服务器记录连接

Node如何使服务器进程保持活动状态?

从Node.js Express服务器发送图像路径以响应客户端

Socket.io Node Js服务器和React js客户端未连接

Node.js服务器(移动客户端)

Node.js:通过socketio将客户端与服务器断开连接

将Node.js作为客户端连接到Common Lisp服务器

从Node.js客户端连接到C服务器

如何使客户端请求保持活动状态以响应jsf中服务器的延迟响应

客户端断开连接并再次连接服务器后,是否在Socket.io和node.js上重新发布了Socket ID?

客户端无法连接到Azure应用服务上托管的Node.js Websocket服务器吗?

如何使具有服务器流连接的Android grpc客户端保持活动状态?

客户端突然断开连接后,如何使服务器套接字保持活动状态?

将Node.js Web客户端连接到Java gRPC服务器时出错

将前端本机Websocket客户端连接到Node.js Socket.io服务器

〜30秒后,Node.js“ ws” Websocket服务器随机断开客户端连接,错误1006

在Node.js上使用soket.io进行服务器和客户端之间的连接

Node.js:即使将allowHalfOpen设置为True,客户端也会与服务器断开连接

如何在客户端(CryptoJS)和服务器(Crypto Node.js)之间建立Diffie Hellman连接

正确处理Node.js TLS服务器和C TLS客户端(openSSL)连接的方法

如何在Node-Opcua服务器中获得已连接的客户端和客户端证书

从服务器端在客户端获取变量(express.js,node.js)

Socket.IO:Swift 客户端连接到 Node.js 服务器但服务器不会注册连接?

使用Chrome和Node.js时,客户端和服务器上是否已编译javascript?

Node.js - 从服务器端还是客户端获取?

在node.js中从服务器端调用客户端函数

服务器操作的Node.js客户端进度指示器

如何在Node.js服务器上的多个客户端之间同步数据