我试图从一个服务器(用作主机)连接到另一个服务器2使用socket.io和socket.io-(作为从机,两者都具有相同的码)客户端节点模块,使用下面的代码:Socket.io-客户端连接到多个服务器
var ioClient = require('socket.io-client');
var hosts = require('./hosts');
var x = {}
for (var i in hosts.get) {
var name = 'ns' + i;
x[name] = ioClient.connect(hosts.get[i].url, { 'force new connection':true });
x[name].on('connect', function() {
console.log(x[name].socket.options.host + ' connected')
});
}
正如你所看到的,我试图连接到X不同的服务器(在文件hosts.js定义),每个插槽存储中的对象。
的问题是,尽管我能够连接,所有的插座似乎来自于最后一台主机,所以我最终是这样的:
host2.pc.gg.edu connected
host2.pc.gg.edu connected
当预期值是:
host1.pc.gg.edu connected
host2.pc.gg.edu connected
我试过断开主机1,然后输出最终是这样的:
host2.pc.gg.edu connected
所以我asume问题为t他没有插座正确建立现场“options.host”
有趣的部分是当我做同样的代码,但是,而不是使用对象变量键,使用eval:
var ioClient = require('socket.io-client');
var hosts = require('./hosts');
var x = {};
for (var i in hosts.get) {
eval('x.ns' + i + '= ioClient.connect(hosts.get[' + i + '].url, { "force new connection":true });x.ns' + i + '.on("connect", function() {console.log(x.ns' + i + '.socket.options.host + " connected")});');
}
令人惊讶的是,这作品,我无法分辨这两个代码之间的区别。我相信,它可能更多的是JavaScript错误,而不是一个socket.io错误,但我没能找到的努力小时后的解决方案......
非常感谢您
工程就像一个魅力,非常感谢你!!!! – Cea33