node如何使用socket.io向指定客戶端發送消息


在node使用socket.io進行websocket通信時,會遇到一個問題 ——服務器如何向指定客戶端發送消息,只會群發多么無聊對吧。
我們知道,客戶端與服務器建立鏈接會觸發connection事件

io.on("connection",function(socket){
    //其他騷操作
});

其中,參數socket為服務器與客戶端建立連接的socket端口對象,其有一個名為id的屬性,該屬性可以識別指定客戶端。
在1.0之前,我們是醬紫實現向指定客戶端推送消息的

io.on("connection",function(socket){
    io.sockets.socket(socket.id).emit('message','surprise');
});

在1.0之后,我們采用如下方式

io.on("connection",function(socket){
    if (io.sockets.connected[socket.id]) {
        io.sockets.connected[socket.id].emit('message','surprise');
    }
});

這里先判斷一下對應sockeid存不存在,如果不存在則意味着對方沒有在線上,我們需要做對應的處理使對方上線后可以收到消息,我的做法是先保存到數據庫中,等上線之后從數據庫中讀取離線時沒有收到的消息。
另外,還可以這樣做

io.on("connection",function(socket){
    io.to(socket.id).emit('message','surprise');
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM