2015-09-06 20 views
0

目前,我正在使用io.emit在哪裏我發送事件給所有連接的用戶和在客戶端我檢查是否我的用戶ID發出等於ID的客戶端然後條件運行我認爲它使我的代碼混亂和有點慢我有什麼可以做像連接然後在一個組中,所以當檢索它們時,我會更容易。節點js連接兩個套接字,使檢索會更容易

//server side 
var id = 1; 
io.emit('check',id); 

// on client side 
socket.on('check',function(data){ 
var current_user_login = //getting current user login id by php 
if(data == current_user_login) { 
//run some code 
} 
}); 

回答

1

如果你想要把某些插座在同一個房間,所以很容易 廣播到所有的人在一起。試試這個:

var io = require('socket.io').listen(80); 

io.sockets.on('connection', function (socket) { 
    socket.join('group'); 
    socket.broadcast.to('group').emit('new member'); 
}); 

希望這會有所幫助。

1

解決此問題的更好方法是在要將數據發送到的用戶與該用戶的套接字之間創建關聯,以便僅將.emit()指定給該特定套接字。這比發送給所有人更有效,尤其是當你有很多連接的套接字時。

你必須向我們解釋更多關於你怎麼知道你要發送到爲了讓我們來幫助找出如何做在服務器中協會,插座或用戶。

socket.io擁有的「房間」,這是插座的羣體是很容易讓你把一個套接字在一個特定的組,並隨後廣播到插座的一組特定的概念。

或者每個插座都有一個id和每個插座有權訪問存在當連接首次製作餅乾,這兩者有時可以用來識別您要發送給哪個用戶。但是,你必須解釋你是如何知道你要發送給我們的用戶,以幫助你瞭解如何將代碼編碼到你的服務器中。

+0

其類似var id = 1; io.emit('check',id);我發送以下事件給id爲1的用戶,所以在客戶端,id爲1的用戶可以訪問該事件,因此我需要將該事件發送給所有連接的客戶端,並檢查發出的id是否等於用戶登錄然後做一些東西 –

+0

@ujwaldhakal - 但你怎麼知道你試圖發送哪個用戶?你的用戶有身份證嗎?那是在一個餅乾?你需要弄清楚你如何找到具有該ID的用戶的特定套接字。我不知道你的ID值是如何工作的,以知道你會如何做到這一點。用戶如何分配一個ID? – jfriend00

+0

不,用戶ID值來自連接的套接字,如任何div的參數或隱藏的輸入字段等 –