flask-socketio配置websocket步骤

Flask-SocketIO异步服务的选择

Flask-SocketIO模块所依赖的异步服务有3个选择

  1. eventlet是性能最好的选项,并支持长轮询和WebSocket传输
  2. gevent支持许多不同的配置。gevent支持长轮询,但不像eventlet,gevent并没有原生支持WebSocket。为了能支持WebSocket,有两种方案:一、安装 gevent-websocket 的方式使其支持WebSocket;二、通过uWSGI 实现WebSocket功能。性能方面,gevent表现不错,但比eventlet略低。
  3. Flask自带的Werkzeug开发服务器也能使用,但相比来说,性能很差,所以建议只用于开发测试。这个方案仅支持长轮询传输。

 

gunicorn+eventlet方式实现websocket

启动命令:

gunicorn -k eventlet -w1 -b0.0.0.0:9001 manage:app

 

nginx配置

在nginx配置文件中增加以下内容

location /socket.io {
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_pass http://127.0.0.1:9001/socket.io;
}

若不按该方式配置,测试表现为长轮询

 

其他方式

  1. flask默认方式,测试表现为长轮询
  2. gevent方式,测试表现为长轮询
  3. gevent+gevent-websocket方式时,测试表现为长轮询,并且在浏览器的控制台会出现报错,原因可能是gevent-websocket不支持python3
  4. uWSGI+gevent方式未测试

 

参考文章

https://flask-socketio.readthedocs.io/en/latest/

https://www.jianshu.com/p/8825536984eb

https://www.jianshu.com/p/be4b23ea0ba5

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值