簡體   English   中英

如何使用socket.io連接Flask中的多個客戶端?

[英]How to connect multiple clients in Flask using socket.io?

我想從socket.io客戶端獲取Flask服務器中的數據。 我的設置是:

  1. Client1在服務器上調用方法request_data。
  2. 然后,方法request_data在Client2上發出“ client2”事件。

我的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.

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