在node.js中保持打开一个tcp套接字
我打开一个tcp连接到一个服务器很容易做到,但我需要一种方法来保持打开的套接字,而不必一次又一次地调用net.createConnection(port, host)
。
我想实现的是一个套接字服务器,它接受多个连接,然后通过一个套接字通道请求,如上所述。 然后我需要将响应传递给正确的套接字。 但是,我唯一的问题是维护一个开放的套接字,我试图在侦听服务器代码之外创build。
我已经用Singleton模式接近它来创build套接字..
var Singleton = (function() { var socket = null; function connectToHost(port, host) { socket = net.createConnection(port, host); return socket; } return { connectToHost: connectToHost }; })();
但从我可以看到,在事件('结束')该套接字不再可写。 如果我重新连接sockets。
socket.on('end', function() { socket = Singleton.connectToHost(port, host); });
Event('end')会发生同样的事情。
我怎么能这样做,以便我可以创build和维护一个套接字连接?
迟到的回应。
如果我正确理解你的问题,你正在尝试做这样的事情?
socket.on('close', function() { socket.connect(port, host); });
根据networkingNode.js v.0.12.0文档
它可能工作,但它会锤击服务器很糟糕,所以setTimeout
可能是明智的。
我很好奇你最终结束了什么?
这听起来像你想要一个多路复用器/解复用器(多路复用器/多路解复用器)在你的服务器前面,大概是这样答复的前端可以正确路由答复的方式。
TCP没有任何东西可以支持这个,所以你必须自己写或者find一个已经写好的东西。 http://www.google.com/search?q=tcp+multiplexer
这个链接看起来很有希望: http : //sourceforge.net/projects/tcpmultiplexer/
(不要把你要找的东西和端口#1上的“tcpmux”混淆起来,这是完全不同的。)