2017-05-16 8 views
0

私はSocket.Ioを使用しています。ExpressJSに接続するAngular 2の1.7.3です。特定のソケットID、実際に一致するイベントにパッケージを送ることはできません。Socket.io特定のソケットに送られていません

Serverの実装

socket.on('subscribeNotification', function(data){ 
     // Get new notification by user_id here .... 
     console.log('Got notification request'); 
     console.log('Your Id is: '+socket.id); 
     socket.broadcast.to(socket.id).emit('sendNotificationsToUser', { 
      text: 'hello', 
      id: socket.id 
     }); 
     socket.emit('claimId', { 
      id: socket.id 
     }); 
    }); 

そして角2実施に関する

subscribeNotificationEvent(userId: string) { 
     let socket = this.socket; 
     let data = { 
      user_id: userId 
     }; 
     // Emit socket 
     socket.emit('subscribeNotification', data); 
    } 
    listenToNotification() { 
     let socket = this.socket; 
     socket.on('sendNotificationsToUser', function (data) { 
      console.log('I hear it !'); 
     }); 
     socket.on('claimId', (data) => { 
      console.log('My id is: ' + data.id); 
     }) 
    } 

ロギング結果

サーバー:

Got notification request 
Your Id is: bSCHMUL2bJJQCXkxAAAC 

クライアント:それはライン'I hear it !'をログアウトすることはできませんので

My id is: bSCHMUL2bJJQCXkxAAAC 

クライアントは、sendNotificationsToUserイベントを受信しません。

私はSending message to specific client in Socket IOにも言及していますが、動作しません。

+0

を使用し、ソケットにのみ送信otの場合? – rpadovani

+0

@rpadovani私はhttps://socket.io/docs/server-api/から入手しました。彼らの公式文書の例: 'client.broadcast.to(id).emit( '私のメッセージ'、msg);' – ThangLeQuoc

答えて

2

あなたが送信者であるため、メッセージを受信して​​いません。

socket.broadcast.emit(msg); // Every socket receives the message, but the socket 

toIdを追加しても、送信者がメッセージを無視するという事実は変わりません。

あなたが代わりに `` socket.send`のsocket.broadcast.to`を(私はSEのどこにも文書化されていないこと)を使用しない理由だけsocket.emit

+0

私は私のドアに歩いて私に手紙を送りました。ありがとうございました。 – ThangLeQuoc

関連する問題