【发布时间】:2011-09-17 02:09:08
【问题描述】:
我正在打开一个到服务器的 tcp 连接,这很容易做到,但我需要一种方法来保持该套接字打开,而不必一次又一次地调用 net.createConnection(port, host)。
我要实现的是一个套接字服务器,它接受多个连接,然后通过上面提到的一个套接字引导请求。然后我需要将响应引导到正确的套接字。但是,我遇到的唯一问题是维护一个我试图在侦听服务器代码之外创建的开放式套接字。
我已经使用单例模式来创建套接字。
var Singleton = (function() {
var socket = null;
function connectToHost(port, host) {
socket = net.createConnection(port, host);
return socket;
}
return {
connectToHost: connectToHost
};
})();
但据我所知,在 Event('end') 上,该套接字不再可写。如果我重新连接套接字。
socket.on('end', function() {
socket = Singleton.connectToHost(port, host);
});
Event('end') 也会发生同样的事情。
我该如何解决这个问题,以便创建和维护一个套接字连接?
【问题讨论】:
-
我不明白你在问什么。套接字是点对点连接。每个连接都必须有一个,并且数据永远不会混合。
-
是的,这是正确的,但我要做的是让多个套接字连接到服务器,然后我需要将请求从每个套接字传递到另一个服务(但在这里我只能打开一个插座)。当我从服务获得响应时,我需要将其引导回正确的套接字。这是我需要将响应映射到正确套接字的地方!
-
所以我列出了连接到我的服务的任何套接字,但我需要将每个请求引导到我需要与另一台服务器打开的一个套接字连接。这是我遇到的问题,保持与该服务器的连接打开。传入流量没有问题。如果您需要更多信息,请告诉我。感谢您的关注。
-
所以我不想在每次收到来自传入套接字的请求时都创建一个到服务器的连接,如果可能的话。我的限制是我只能与我正在引导请求的服务器建立一个开放连接。
-
我忽略了它 - 问题已解决..