原本已有一个包含http接口的后端,使用flask+uwsgi部署
现需要给后端增加一个websocket接口,与原有http接口共用一个端口,因此做如下修改(仅列出增补修改的部分,非完整代码)
安装依赖【linux环境】
pip install Flask-uWSGI-WebSocket
apt-get install build-essential libssl-dev python3-dev python3-venv
python代码
# 引入这个库
from flask_uwsgi_websocket import WebSocket
...
app = Flask(__name__)
# app = Flask(__name__)后增加以下这一行
sockets = WebSocket(app)
# 写websocket接口(原有其他http接口无需修改)
@sockets.route('/接口名')
def xxxxx(ws):
...
# ws.receive()接收消息
message = ws.receive()
# ws.connected判断连接是否还未断开
while ws.connected:
...
# ws.send()发送消息
ws.send("xxx")
...
uwsgi配置
[uwsgi]
#指定端口
http=0.0.0.0:9876
# 增加以下几行
http-websockets = True
# 设置url地址最大长度, 默认长度是4096
buffer-size = 40960
....
nginx配置
server {
listen 7891;
server_name 0.0.0.0;
location ~ /xxxxx/ {
proxy_pass http://localhost:9876;
# 增加以下两行
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
....
参考链接
https://blog.csdn.net/qq_40292262/article/details/121877812
https://blog.csdn.net/yyt593891927/article/details/109260784