我試圖從一個服務器(用作主機)連接到另一個服務器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