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
当我使用 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