【发布时间】:2017-09-05 23:55:41
【问题描述】:
我使用带有 socket.io 的 nodejs 集群,在主线程中我使用内置的网络库来监听端口并将连接(套接字)手动传递给工作人员(基于客户端的 IP 地址,所以如果客户端重新连接到服务器,客户端将加入同一个工作人员)。这运行良好,但我想测试,我想从 localhost 加入不同的工作人员。
是否有任何方法可以获取有关客户端的信息(例如浏览器名称、自定义参数)或其他任何东西来使来自 localhost 的两个或多个客户端之间有所不同? - 如果我能够在开发环境中将客户端加入到基于浏览器的工作人员(chrome 客户端转到工作人员 1,firefox 客户端转到工作人员 2),那可能会很酷。
private createServer(): void {
var self = this;
this.masterServer = net.createServer(<any>{ pauseOnConnect: true }, (connection) => {
console.log('server', connection);
let worker = self.workers[self.getWorkerIndex(connection.remoteAddress, self.workerCount)];
worker.send('privateCon', connection);
}).listen(self.serverPort);
}
【问题讨论】:
-
这有点困难,因为连接必须在任何额外的协议信息可用之前发生。您打算在什么操作系统上运行?
-
源 IP、源 TCP 端口和目标 IP 是您拥有的 3 样东西
-
开发环境是 windows 10。源 ip、tcp 端口和指定 ip 在任何来自 localhost 的连接上都是相同的。
-
源/目标 ip 可以更改为 127.0.0.0/8 范围内的任何内容,它们都指向环回接口。您已经可以
ping 127.0.0.2。只要您不监听特定的 127 地址,您就可以连接到不同的地址,并且应该能够在connection中选择该地址
标签: javascript node.js multithreading typescript socket.io