最近在写一个谁是卧底小游戏,用websocket即时更新各种状态,使用了flask_sockets这个库, 但这个库已经很久不维护了, 有一个bug需要安装后自行修改。这里做一下记录希望可以帮到有需要的人。
现象
客户端连接ws时报错: werkzeug.routing.WebsocketMismatch: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
安装
pip install flask_sockets
安装以后手动修改
- 文件: flask_sockets.py
- 函数: add_url_rule
- 修改前:self.url_map.add(Rule(rule, endpoint=f))
- 修改后:self.url_map.add(Rule(rule, endpoint=f, websocket=True))
- 关于此问题的讨论参考:
https://github.com/heroku-python/flask-sockets/issues/81 - 关于此问题的修改参考:
https://github.com/slipperstree/flask-sockets/commit/cb06c69db3af2cb52fbc050f3595ffa4100bbee3
追记
推荐大家使用 Flask-SocketIO,功能比flask_sockets强大,需要使用SocketIO的js库。可为用户分组,支持群发,单独发等功能。
3 comments
thank you OωO
谢谢,这是我找到的唯一一个有用的方法
不客气 ::twemoji: