2017-06-16 22 views
0

マイエラー:nodejs + socket.io +ハートビート

engine.io ./lib/socket.jsライン98

01: Socket.prototype.onPacket = function (packet) { 
02: if ('open' === this.readyState) { 
03:  debug('packet'); 
04:  this.emit('packet', packet); 
05:  this.setPingTimeout(); 
06:  switch (packet.type) { 
07:  case 'ping': 
08:   debug('got ping'); 
09:   this.sendPacket('pong'); 
**10:   this.emit('heartbeat');** 
11:   break; 
12:  case 'error': 
13:   this.onClose('parse error'); 
14:   break; 
15:  case 'message': 
16:   this.emit('data', packet.data); 
17:   this.emit('message', packet.data); 
18:   break; 
19:  } 
20: } else { 
21:  debug('packet received with closed socket'); 
22: } 
23: }; 

どのようにイベントを聴くことができます。

this.emit( 'heartbeat');

私はこのコードを書いた:

this.sio.sockets.on('connection', function (socket) { 
    socket.on('heartbeat', function() { 
     console.log("heartbeat " + socket.id); 
    }); 
} 

を、それは印刷されません。

デバッグプリントは次のとおりです。

私を助けることができる
2017-06-16: Fri, 16 Jun 2017 06:26:44 GMT engine:ws received "2" 
2017-06-16: Fri, 16 Jun 2017 06:26:44 GMT engine:socket packet 
2017-06-16: Fri, 16 Jun 2017 06:26:44 GMT engine:socket got ping 
2017-06-16: Fri, 16 Jun 2017 06:26:44 GMT engine:socket sending packet "pong" (undefined) 

答えて

0

こんにちは、パラメータを指定せずにemit heartbeatでデータを送信しています。あなたはemitでデータを渡すべきです。 This.emit( 'ハートビート'、パケット)

関連する問題