2014-10-27 57 views
1

我想了解如何使用Node.js發送通知+ soket.io發送使用Node.js的通知+ socket.io

在客戶端發出我向服務器監聽

socket.emit('send to server',{user_id:user_id,other_stuff:other_stuff}) 

在節點

socket.on('send to server',function(date){ socket.emit('notification_'+user_id,'test data'); }); 

在客戶端偵聽通知

socket.on("notification_<?php echo $_SESSION['user_id'];?>",function(date){alert(data)}); 

問題是,它不會發送通知其他用戶

如果我通過發射過程中我自己的user_id「發送至服務器」後返回給自己,但如果使用其他的user_id(誰在其他borwser登錄),它不會向該用戶發送任何內容。

請注意,如何在發生某些操作時向不同的用戶發送通知。

回答

3

如果你想在同一命名空間下發送給其他用戶的通知:

socket.on('send to server',function(data){ 
     socket.broadcast('notification','test data'); 
    }) 

只有特定用戶(sockets.io的1.x)

socket.on('send to server',function(data){ 
    socketId = getSocketIdFromUserId(user_id); 
    io.to(socketId).emit('notification', 'test data'); 
}) 

沒有必要在客戶端加入您的聽衆名字 的編號:

socket.on('notification',function(data){ 
    alert(data) 
}); 
+0

您好傑克,非常感謝y我們的答案,只是有一點疑問,當我將使用io.to(data.user_id)時,誰將識別哪個用戶發送哪個用戶 – 2014-10-27 22:06:40

+0

我的錯誤是您需要通過的socketId – 2014-10-27 22:11:38

+0

您可能需要執行socketId和userId之間的映射,看看這個答案http://stackoverflow.com/questions/6563885/socket-io-how-do-i-get-a-list-of-connected-sockets-clients – 2014-10-27 22:14:49