[英]What is the scope of socket.emit()?
我們正在將Socket.IO用於聊天應用程序。 誰會收到通過socket.emit()
發送的消息? 在這里 ,就像socket.emit()
將只向一個客戶端發送一條消息一樣。
我們的要求是實現一對一的通信(一個用戶和服務器之間,而不是兩個用戶之間)。 當前,我們正在為不同的用戶創建單獨的房間,並使用io.in(room).emit()
發送消息。 消息將發送給該會議室中的每個人,根據我們的應用程序,一個會議室將只有一個用戶。
我們可以使用socket.emit()
通過創建單個房間並設法響應特定客戶端來實現相同socket.emit()
嗎?
更新: -
為了進一步說明,這是一個方案。
五個不同的用戶打開了聊天框,每個人向服務器提出一個不同的問題。 我們創建五個不同的房間(一個供用戶使用),然后使用io.in(room).emit()
響應用戶。
因此,實際上,我們在服務器端所做的就是根據他所在的房間來識別用戶 。 這里有更好的方法嗎? 聽說過socket.emit()
只會響應一個客戶端,並且想知道這是否可以緩解我們的問題。
根據您的要求,用戶僅將數據發送到服務器。 您可以使用相同的方法在客戶端和服務器上的事件中使用發射事件。
客戶
客戶端發射方法
socket.emit('DataClientToServer',{data : 'hello'});
客戶端使用方法,從服務器獲取數據
socket.on('DataServerToClient',function(data){
console.log(data);
});
服務器
服務器上方法僅使用socket.id獲取數據並將數據發送到該客戶端
socket.on('DataClientToServer', (data) => {
console.log(data);
//Send data to that client only using socket.id
io.to(socket.id).emit('DataServerToClient',{data : 'Server to Client'});
});
對於檢測哪些用戶發送數據,則發送如用戶唯一的用戶名或用戶ID或OBJECTID等額外的數據
每個用戶都不需要房間。
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.