2011-10-28 6 views
0

私はnodeJSとSocket.IOが新しく、問題に直面しています。Socket.IOハンドラでイベントタイプを検出する

Socket.IOハンドラ内のイベントの種類を知る方法はありますか?私はこの種のコードを持っています:

// Fire the appropriate callback when we receive a message 
// that.received is an array of callback functions 
for (var event in that.received) { 
    socket.on(event, function(message) { 
     // Of course, this won't work because of "event" scope 
     that.received[event](message, this); 
    }); 
} 

私が知りたいのは、私のハンドラを引き起こした "イベント"の実際の価値です。 私はChrome開発ツールで利用可能な変数を調べようとしましたが、何も見つかりませんでした。

私は、複数のソケット(フォールバックサーバーについては長いstorty)を扱うためにSocket.IOの周りに何らかの種類のラッパークラスを作成しているので、これを行う必要があります。ハンドラを渡すのに十分な汎用性を持たせたい。

アイデア?

+0

[Javascript closure inside loopsの簡単な実用例](http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – pimvdb

+0

ニースの解決策、私は使用しますもし私がそれを見つけなければ、私は不必要な問題を作り出したのです。 ありがとう、私はなぜそれについて考えなかったのかわかりません。 – PJP

答えて

2

OK、ばかげた質問です。

は、私はちょうどこれを実行する必要があります。私は「この」ちょうど愚かである私のコールバック関数に渡した

// Fire the appropriate callback when we receive a message 
for (var event in that.received) { 
    socket.on(event, that.received[event]); 
} 

。私のコールバックは、このように見えた:

function myCallback(message, socket) { 
    // Some code... 
    socket.emit('ack', message.id); 
    // Some code... 
} 

しかし、私がしなければならないすべてはこれです:だから私はもうスコープの問題を持っていない

function myCallback(message) { 
    // Some code... 
    this.emit('ack', message.id); 
    // Some code... 
} 

関連する問題