私は、flapjax を使用して小さなチャットサービスを実装しようとしています。サーバーに接続するすべてのクライアントを取得するために eventStream を使用し、メッセージ (「メッセージ」の関数) をブロードキャストするときに、現在のクライアントにメッセージを送信する関数でこの eventStream をマップします。
// Event stream yielding received clients
var clientReceiverE = receiverE();
// Event stream collecting all the clients
var clientsE = clientReceiverE.collectE([], function (client, clients) {return clients.concat([client]);});
socket.on('connection', function(client) {
clientReceiverE.sendEvent(client);
for (i = 0; i < chatMessages.length; i++) {
client.emit('message', chatMessages[i]);
}
client.on('message', function(message) {
chatMessages.push(message);
//for (i = 0; i < clients.length; i++) {
// clients[i].emit('message', message);
//}
mapE(clientReceiverE, function(client) {console.log(client); client.emit('message', message); return client});
});
client.on('nickname', function(name) {
});
});
イベント ストリーム上のクライアントの登録文字列はこのコードで成功しますが、mapE はこのすべてのクライアントでループを引き起こしません。ここで何が悪いのか誰か知っていますか?