【问题标题】:SocketIO + Flask Detect DisconnectSocketIO + Flask 检测断开连接
【发布时间】:2020-07-07 19:41:23
【问题描述】:

我在这里有一个不同的问题,但我意识到它可以简化为: 您如何检测客户端何时从页面断开(关闭其页面或单击链接)(换句话说,套接字连接关闭)?我想制作一个带有更新用户列表的聊天应用程序,并且我在 Python 上使用 Flask。当用户连接时,浏览器发送一个带有事件和用户名的socket.emit(),以告诉服务器一个新用户的存在,之后服务器将向所有客户端发送socket.emit(),以便所有客户端都附加这个新用户用户到他们的用户列表。但是,我希望客户端也在断开连接时向服务器发送包含其用户名的消息。我无法弄清楚如何正确触发触发器。注意:我只是为页面使用了一个带有脚本标签的简单 html 文件,我不确定如何添加一个 JS 文件以与页面一起使用,但我可以弄清楚是否有必要这样做。

【问题讨论】:

    标签: python python-3.x sockets flask socket.io


    【解决方案1】:

    想通了。 socket.on('disconnect') 确实是正确的,但默认情况下它每分钟左右只对每个用户执行一次 ping,这意味着需要很长时间才能看到该事件。

    【讨论】:

    • 这对我来说是无能为力的信息!谢谢!请添加信息如何从 1 分钟更改默认 ping 解析时间。
    • 我也想看看你的解决方案
    • Socket.IO 默认使用长轮询而不是 Web 套接字(很遗憾)。这是因为 Flask 本身不能原生支持 Web 套接字(但似乎 Flask 2.0 已经采取了一些措施来改进支持)。要使用 Flask-SocketIO 运行 websocket,您需要通过服务器(例如 gunicorn)使用 eventlet 或 gevent worker 运行 Flask。 flask-socketio.readthedocs.io/en/latest/deployment.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多