【问题标题】:How to make multiple events with Flask SocketIO?如何使用 Flask SocketIO 进行多个事件?
【发布时间】:2020-01-23 01:10:43
【问题描述】:

我有一个社会连接,提供按钮点击搜索:

$(document).ready(function () {
        var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', function () {
            socket.emit('seatch event', {
                data: 'App Started'
            })
            var form = $('form').on('submit', function (e) {
                let search_query = $('#search_text').val()
                socket.emit('search event', {
                    search_query: encodeURIComponent(search_query)
                })
            })
        });

socket.on('search_results_event', function (msg) {
    //do someting
});

现在我想添加另一个事件,在我的情况下,每次当列表中的<li> 元素变为activate 时,我想向服务器发送数据并接收答案。
如何添加此活动?我必须添加另一个connection
有什么建议吗?

【问题讨论】:

    标签: flask flask-socketio


    【解决方案1】:

    您不需要其他连接。连接套接字后,您可以使用socket.on,因为您已经必须捕获从服务器发出的事件,以及emit,例如socket.emit('[event_name], [data_object]) 向服务器发送数据。

    在 javacript 端,你会像这样发出

    socket.emit('my_event', {'message': 'hello world'})
    

    您可以在 flask 旁边处理此问题

    @socketio.on('my_event')
    def handle_my_event(data):
    
        print('Received an instance of my_event')
    
        #  will print {'message': 'hello world'}
        print(data) 
    

    同样,您可以从flask 服务器发出事件,例如您的search_results_event by

    from flask_socketio import emit
    
    emit('search_results_event', {'key': 'value'})
    

    这将由问题中现有的socket.on 处理。 emit 的第二个参数是您要发送的数据 - 通常是 json。

    更多信息请参见the docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2022-01-03
      • 2022-12-16
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多