【问题标题】:How does send work in flask-socketio?在flask-socketio中发送是如何工作的?
【发布时间】:2018-04-20 03:08:39
【问题描述】:

我无法理解send 函数在flask-socketio 中的工作原理。

例如,我使用flask-socketio 作为服务器,socket.io 作为客户端:

服务器:

@socketio.on("test")
def handle_test():
    send("Wow")

客户:

socket.emit('test', "", (data) => {
    console.log(data);
});

我想我可以从服务器端获得data,但我错了。我什么也得不到。

我知道我可以根据事件构建结构。但我无法理解send 的工作原理。它会向客户端发送响应吗?如果会,我怎么能得到那个回应?如果不会,它会做什么?

【问题讨论】:

    标签: python websocket socket.io flask-socketio


    【解决方案1】:

    首先,我建议你使用emit() 而不是send()

    要从客户端发送到服务器,请使用:

    socket.emit('test', {data: 'my data'});
    

    在服务器上,您可以接收事件,然后将其发送回客户端:

    @socketio.on('test')
    def handle_test():
        emit('wow');
    

    要在客户端接收第二次发射,请执行以下操作:

    socket.on('wow', function(data) {
        console.log(data);
    });
    

    【讨论】:

    • 我完全理解emit 的工作原理。事实上,这就是我所说的“基于事件构建结构”。但我无法弄清楚send 是如何工作的。那是我的问题。你能提供更多关于send的信息吗?
    • send() 是旧版 Socket.IO 的遗留方法。它使用两个预定义的事件名称messagejson,具体取决于数据是字符串还是列表/字典。因此,要从send() 接收,您需要在另一端为message 提供事件处理程序。
    • 谢谢,这很有道理。
    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 2016-04-07
    相关资源
    最近更新 更多