烧瓶网络套接字未连接
flask web socket not connecting
我正在尝试将 flask(1.1.2) 中的 websocket 与 Flask-SocketIO(5.0.1) 连接起来,但它给 websocket url 带来了 400 错误。我正在使用 anaconda 虚拟环境。
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def stock_view():
return render_template('index.html')
@socketio.on('message')
def handle_message(data):
print('received message: ' + data)
if __name__ == '__main__':
socketio.run(app)
######### index.html #########
<html>
<head>
</head>
<body>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
var socket = io();
socket.on('connect', function() {
socket.emit('my event', {data: 'I\'m connected!'});
});
</script>
</body>
</html>
我的 requirements.txt 是 -
amqp==5.0.3, bidict==0.21.2, certifi==2020.12.5,click==7.1.2, dnspython==1.16.0, eventlet==0.30.0, Flask==1.1.2, Flask-SocketIO==5.0.1, gevent==21.1.1, gevent-websocket==0.10.1, greenlet==1.0.0, importlib-metadata==3.4.0, itsdangerous==1.1.0, Jinja2==2.11.2, kombu==5.0.2, MarkupSafe==1.1.1, python-engineio==4.0.0, python-socketio==5.0.4, six==1.15.0, typing-extensions==3.7.4.3, vine==5.0.0, Werkzeug==1.0.1, zipp==3.4.0, zope.event==4.5.0, zope.interface==5.2.0
这是因为版本兼容性,你应该将你的 Python-socketIo 版本降级到 3,它适用于 Js 中的 SocketIo 版本 1,或者将你的 Js 客户端 SocketIo 版本升级到 3,它适用于 Python-SocketIo 5.
我正在尝试将 flask(1.1.2) 中的 websocket 与 Flask-SocketIO(5.0.1) 连接起来,但它给 websocket url 带来了 400 错误。我正在使用 anaconda 虚拟环境。
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def stock_view():
return render_template('index.html')
@socketio.on('message')
def handle_message(data):
print('received message: ' + data)
if __name__ == '__main__':
socketio.run(app)
######### index.html #########
<html>
<head>
</head>
<body>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
var socket = io();
socket.on('connect', function() {
socket.emit('my event', {data: 'I\'m connected!'});
});
</script>
</body>
</html>
我的 requirements.txt 是 -
amqp==5.0.3, bidict==0.21.2, certifi==2020.12.5,click==7.1.2, dnspython==1.16.0, eventlet==0.30.0, Flask==1.1.2, Flask-SocketIO==5.0.1, gevent==21.1.1, gevent-websocket==0.10.1, greenlet==1.0.0, importlib-metadata==3.4.0, itsdangerous==1.1.0, Jinja2==2.11.2, kombu==5.0.2, MarkupSafe==1.1.1, python-engineio==4.0.0, python-socketio==5.0.4, six==1.15.0, typing-extensions==3.7.4.3, vine==5.0.0, Werkzeug==1.0.1, zipp==3.4.0, zope.event==4.5.0, zope.interface==5.2.0
这是因为版本兼容性,你应该将你的 Python-socketIo 版本降级到 3,它适用于 Js 中的 SocketIo 版本 1,或者将你的 Js 客户端 SocketIo 版本升级到 3,它适用于 Python-SocketIo 5.