Nitzan Shakedが言うように、あなたの問題はループの問題によるものです。コールバックが起動し始めると、すべてのi
値が9
ここにあります。
一般的なソリューション
一般的な解決策として、単純なクロージャーを使用して解決します。
var WebSocket = require('ws')
var ws = [];
for (var i = 0; i < 10 ; ++i) {
ws[i] = new WebSocket('ws://127.0.0.1:9898/echo/websocket');
ws[i].on('open', generator(ws[i]));
}
//generator makes a function with present object and returns it
var generator = function (k) {
return function() {
k.send('why');
}
}
簡単な方法
ws[i]
ただし、コンテキストに固有の最も簡単な方法は、単にthis
var WebSocket = require('ws')
var ws = [];
for (var i = 0; i < 10 ; ++i) {
ws[i] = new WebSocket('ws://127.0.0.1:9898/echo/websocket');
ws[i].on('open', function() {
this.send('why');
});
}