【发布时间】:2020-06-13 05:30:11
【问题描述】:
我正在使用flask-socketio制作一个聊天应用程序,现在我想在客户端断开连接时使用客户端的用户名向服务器发出一条消息,即当客户端关闭浏览器/选项卡时,我可以将该消息从服务器发送到所有现有的客户为他们更改他们的在线朋友列表。我已经用谷歌搜索了两个多小时,我接近的任何东西都是this 和this,但它对我不起作用。我在服务器端通过以下方式在flask-socketio docs中找到了一种方法,但我不知道哪个客户端断开连接,所以我无法更改在线好友列表。
@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 的新手,我们将不胜感激。
【问题讨论】:
-
您可以使用
request.sid知道哪个用户已断开连接。 -
是的,我可以通过它看到 id,但我也想获取断开连接的客户端的用户名,就像客户端在断开连接后发送一样。
标签: flask flask-socketio