0

我想从 socket.io 客户端获取我的 Flask 服务器中的数据。我的设置是:

  1. Client1 在服务器上调用方法 request_data。
  2. 然后方法 request_data 在 Client2 上发出“client2”事件。

我的烧瓶服务器中有以下方法:

@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 的连接。我在这里做错了什么?

4

1 回答 1

0

当您在emit没有明确指示收件人的情况下调用该函数时,事件将被发送回调用者,在您的示例中,调用者就是将client1事件发送到服务器的客户端。

如果你想向不同的客户端发出,你需要知道它的会话 id(或sid)。在任何处理程序中,您都可以使用request.sid来获取发送者的会话 ID。例如,您可以编写一个连接处理程序来记录附加到您的应用程序特定数据的这些会话 ID,然后当您想向特定客户端发送某些内容时,请执行以下操作:

emit('client2', {'data': 'testdata'}, room=get_sid_for_user(username))

这里的room参数指定将消息发送到哪个房间。所有用户都有一个以其会话 ID 命名的默认房间。

于 2016-04-23T15:56:25.603 回答