gpt4 book ai didi

Flask-socketio 断开客户端

转载 作者:行者123 更新时间:2023-12-04 14:13:39 28 4
gpt4 key购买 nike

我正在使用 flask-socketio 创建一个聊天应用程序,现在我想在客户端断开连接时使用客户端的用户名向服务器发送一条消息,即当客户端关闭浏览器/选项卡时,以便我可以将该消息从服务器发送到所有现有的客户为他们更改他们的在线 friend 列表。我在谷歌上搜索了两个多小时,我接近的任何东西都是 thisthis但它对我不起作用。我在服务器端通过以下方式在 flask-socketio 文档中找到了一种方法,但我不知道哪个客户端断开连接,所以我无法更改在线好友列表。

@socketio.on('disconnect')
def test_disconnect():
print('Client disconnected')
emit('client disconnected','a client disconnected but I dont know who',broadcast = True) # i have imported emit
# but since i don't know which client disconnected i couldn't emit client name above.

所以,我认为从客户端发送消息会更好,如下所示,但在客户端关闭浏览器后,服务器不会收到该消息:

// handle disconnect
socket.on('disconnect',()=>{
socket.emit('client disconnected',{'username':localStorage.getItem('username')})
})

我是 flask-socketio 的新手,非常感谢任何帮助。

最佳答案

您可以使用 onbeforeunload 事件。当浏览器选项卡或窗口关闭、尝试离开页面或重新加载页面时,将触发此事件。

客户端:

<script>
window.onbeforeunload = function () {
socket.emit('client_disconnecting', {'username':localStorage.getItem('username')});
}
</script>

服务器端:

@socket.on('client_disconnecting')
def disconnect_details(data):
print(f'{data['username']} user disconnected.')

关于Flask-socketio 断开客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62355914/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com