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');
});
發佈了66 篇原創文章 · 獲贊 47 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章