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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章