我可能在这里做错了什么,但本质上我有一个服务层可以拦截对某个 url 的发布请求。重要的是它永远不会关闭,所以我将它与主服务器隔离开来。我认为让服务层接受 http 请求并通过任何连接的流发送生成的 XML 数据包是最简单的。好吧,它在技术上是可行的,但我遇到的问题是服务器和客户端都在同一台机器上,而且似乎 stream.write 正在填满内核缓冲区并减慢它命中之间的时间量服务层到它实际到达客户端的时间。
在服务器端
在连接时,我将流推送到连接数组中,我还设置了一个时间间隔以确保我在过去 12 秒内收到了一条消息(心跳)。
在接收时我遍历流数组,确保它是可写的并将 xml 数据包写入它。
在客户端
每 8 秒写一次“心跳”以确保我不会掉线
在传入消息时,我将 XML 解析为 JSON 对象并在服务器内处理它。
这似乎没什么特别的,但我可能遗漏了什么。
最佳答案
I figured it'd be easiest to have the service layer take the http requests and send the resulting XML packet over any streams connected.
要记住的一件事是 Node 缓冲通过流发送的东西。正如您所指出的,“stream.write 正在填满内核缓冲区”,这是预期的行为,因为通常不会使用流以这种方式进行通信。您可以尝试不同的方式,例如通过 sockets 发送请求到你的其他进程?
希望这对您有所帮助?
停进#node.js随时向我们提问!
编辑:再想想,你已经在使用套接字了吗?如果是这样,我的回答真的没有帮助,抱歉。
关于javascript - Node.JS 套接字服务器和同一服务器上的连接速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357654/