2016-08-30 4 views
0

自分のニーズに合ったカスタムバージョンを作成しようとしています。socket.ioのemit()メソッドとon()メソッドを作成しようとしています。 私はこのようなEMIT()メソッドのためにそれを行うことができた:私は、コールバック関数のデータを取得することはできませんだから、私は、上の()メソッドのためにそれを行うために問題を抱えているwrapped socket.io emit and onメソッド

socket._emit = function() { 
     console.log('socket._emit ', arguments); 
     event = arguments[0]; 
     data ={ 
      'username': user.username, 
      'token': user.token, 
      'data': arguments[1] 
     }; 
     socket.emit.apply(this, [event, JSON.stringify(data)]); 
}; 

、今私のカスタム_on()は特別なことはしません、ちょうどデフォルトのon()を呼び出します。

socket._on = function() { 
     socket.on.apply(this, arguments); 
}; 

私の目標は、on()メソッドのコールバックで受け取ったすべてのデータを記録することです。私はこのようなことを試みたが、うまくいかなかった。

socket._on = function() { 
     callback = function(){ 
      console.log('socket._on ', //arguments from arguments[1]()//); 
      arguments[1](); 
     } 
     socket.on.apply(this, [arguments[0], callback()]); 
}; 

私のテストを改善する方法はありますか?

おかげで、アレッサンドロ

+0

これはまだ作業しましたか? – Garre

+0

はいコールバックからデータを取得できました。私はコードを使って答えを投稿した。 – alessandrocaprarelli

答えて

0

私はこの解決策になってしまった:

var _onevent = socket.onevent; 
socket.onevent = function (packet) { 
    console.log('[S] On: ', packet); 
    _onevent.call(socket, packet); 
}; 

あなたは、あなたにとって重要かを確認するために、ビットにpacketオブジェクトを調査する必要があります。

worked for socket.io 1.7.2。

関連する問題