WebSocket 传输不可用,您必须安装与您的异步模式兼容的 WebSocket 服务器才能启用它

The WebSocket transport is not available, you must install a WebSocket server that is compatible with your async mode to enable it

当我使用 python-socketio 和 gunicorn 在 python 环境中开发一些 socket.io 服务时,我遇到了一个问题。

我正在使用 Mac OS X 我正在使用 python 3.7.

环境设置
$ pip install python-socketio
$ pip install gunicorn

服务器端代码
app.py

import socketio

sio = socketio.Server()
app = socketio.WSGIApp(sio, static_files = {
    '/': './socketio-client.html'
})

@sio.event
def connect(sid, environ):
    print(sid, 'connected')

@sio.event
def disconnect(sid):
    print(sid, 'disconnected')

客户端代码
socketio-client.html

<html>
  <head>
    <title>Socket.IO Demo</title>
    <script src="https://cdn.socket.io/3.1.3/socket.io.min.js" integrity="sha384-cPwlPLvBTa3sKAgddT6krw0cJat7egBga3DJepJyrLl4Q9/5WLra3rrnMcyTyOnh" crossorigin="anonymous"></script>
  </head>
  <body>
    <h1>Socket.IO Demo</h1>
    <script>
      const sio = io();
      sio.on('connect', () => {
        console.log('connected');
      });

      sio.on('disconnect', () => {
        console.log('disconnected');
      });
    </script>
  </body>
</html>

开始程序
我将文件放在同一个文件夹中。并按照命令启动它。
$ gunicorn --thread 50 app:app

我用浏览器打开http://localhost:8000 就可以了。 问题 但是服务器有问题

The WebSocket transport is not available, you must install a WebSocket server that is compatible with your async mode to enable it. See the documentation for details. (further occurrences of this error will be logged with level INFO)

我努力做到
$ gunicorn --log-level INFO --thread 50 app:app
但我仍然无法从 INFO 日志级别获得有用的信息。

代码可以继续到运行,但是消息显示我要安装WebSocket服务器,我不知道在python-socketio这种情况下我需要安装哪种包或独角兽。

我错过了安装什么样的软件包? 我是第一次使用python-socketio和gunicorn。
接下来我该做什么?

感谢您的帮助。

这里只是需要安装更多的包。
$ pip install gevent-websocket
$ pip install eventlet

然后
$ gunicorn --thread 50 app:app

更新 1:

如果服务端需要主动emit到客户端,就需要这个环境。因为这个命令$ gunicorn --thread 50 app:app不能支持这种情况

工作环境需要按照以下设置。

$ pip install eventlet==0.30.2
$ gunicorn -k eventlet -w 1 app:app