[英]How to connect multiple clients in Flask using socket.io?
我想從socket.io客戶端獲取Flask服務器中的數據。 我的設置是:
我的Flask服務器中有以下方法:
@socketio.on('client1')
def test_message(message):
emit('client2', {'data': 'testdata'})
在應接收數據的客戶端上:
$(document).ready(function(){
var socket = io.connect('http://' + document.domain + ':'+location.port);
socket.on('connect', function() {
socket.emit('my event', {data: 'I\'m connected!'});
});
socket.on('client2', function(msg) {
console.log(msg.data)
console.log("here")
});
});
但是我似乎無法建立與client2的連接。 我在這里做錯了什么?
當您在沒有顯式指示接收者的情況下調用emit
函數時,該事件將被發送回調用方,在您的示例中,該調用方是將client1
事件發送到服務器的客戶端。
如果要發送給其他客戶端,則需要知道其會話ID(或sid
)。 在任何處理程序中,都可以使用request.sid
獲取發送者的會話ID。 因此,例如,您可以編寫一個連接處理程序,記錄連接到您的應用程序特定數據的這些會話ID,然后在您想要向特定的客戶端發送消息時執行以下操作:
emit('client2', {'data': 'testdata'}, room=get_sid_for_user(username))
在這里, room
參數指定將消息發送到哪個房間。 所有用戶都有一個默認會議室,該會議室以其會話ID命名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.