簡體   English   中英

socket.emit()的范圍是什么?

[英]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'});
        });

對於檢測哪些用戶發送數據,則發送如用戶唯一的用戶名用戶IDOBJECTID等額外的數據

每個用戶都不需要房間。

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM