python-在WebSocket连接上重新连接用户
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-在WebSocket连接上重新连接用户,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1348字,纯文字阅读大概需要2分钟。
内容图文
![python-在WebSocket连接上重新连接用户](/upload/InfoBanner/zyjiaocheng/663/4d2b8d8b6dfb435298d0a77788aa7b90.jpg)
我们有一个平台(应用程序Web应用程序),用户可以在其中通过WebSocket连接连接到服务器.
出于架构设计和安全性原因,我们希望限制每个用户使用不超过1个并发连接.
我们将python的龙卷风用作websocket处理程序,并维护已连接用户的全局列表.
这就是我们的open()函数的样子:
def open():
"""connections {user_id: ws_handler}
"""
global connections
user_id = self.get_argument("user_id", None)
if user_id and user_id not in connections.keys():
connections[user_id] = self
# proceed
else:
# replace the old connection
connections[user_id].close()
connections[user_id] = self
最初,我们将拒绝给定用户的第二个传入连接.移动设备失去网络连接的问题使我们改变了解决方案-在这种情况下,不会为WebSocket连接启动.close().因此,我们决定用新的连接替换旧的连接.
我们当前面临的问题是多个浏览器窗口上的客户端-客户端尝试重新连接,并且选项卡/窗口进入了重新连接之战.一个连接并断开另一个连接,另一个重新连接并断开第一个连接.我们在客户端(应用程序和Web)中都实现了自动重新连接,因此当(由于某种原因,通常是网络条件)连接断开时,它们会自动重新连接.
我们尝试使用指数补偿,但这似乎不是令人满意的解决方案.
问题:
有没有人处理过类似的问题?
是否有解决该问题的通用设计模式?
解决方法:
如何使用user_id device_key / cookie作为连接密钥?例如:
connections = {
'1': {
'iphone': ws_connection1,
'pc': ws_connection2
},
'2': {
'ipad': ws_connection3
}
}
如果这是来自新设备的请求,则如果连接了至少一个其他设备(如果是同一设备),则必须拒绝它-重新连接.
内容总结
以上是互联网集市为您收集整理的python-在WebSocket连接上重新连接用户全部内容,希望文章能够帮你解决python-在WebSocket连接上重新连接用户所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。