2017-01-23 147 views
1

如何發送個人訊息在燒瓶插座io?我有一個關於request.sid的暗示,但我不知道如何獲得我要發送消息的人的request.sid?我怎樣才能給發送者和接收者分配一個共同的房間?燒瓶插座io私人聊天

if user_exist: 
     @socketio.on('private message', namespace='/message/') 
     def join(msg): 
      join_room(request.sid) 
      room = request.sid 
      emit("my response",{ "data" : msg['data'] },room=room) 

這裏的request.sid指的是發送者的sid而不是接收者的sid,那麼我怎樣才能把他們兩個分配給同一個房間呢?

回答

2

你有幾個方法來做到這一點。

當每個客戶端連接時,您可以將分配給該客戶端的request.sid與您的用戶信息相關聯。例如,您可以將其作爲額外字段添加到用戶數據庫中。然後,當您需要向單個客戶端發送消息時,請在數據庫中查找sid,然後將其作爲emit()調用中的room參數傳遞。

另一種可能更簡單的選擇是在連接時將每個客戶端放置在自己的房間中。例如,您可以將每個客戶端分配到以提供的用戶名命名的房間。然後,您只需將room=username傳遞給emit()調用即可向用戶發送消息。

+0

嘿米格爾,我想第一種方法是我可以實現的完美方法。 – sanjayscript