python - 尽管使用了 socketio.run(),但“Flask-SocketIO 正在 Werkzeug 下运行”
问题描述
尽管使用了 socketio.run(),但我在使用 Eventlet 运行 Flask 和 SocketIO 时遇到了问题,欢迎提出任何建议。我目前使用的是 Python 3.9,并且我尝试了每个模块的多个不同版本,但无济于事。
[2021-04-04 06:39:05,709] WARNING in __init__: Flask-SocketIO is Running under Werkzeug, WebSocket is not available.
"GET /socket.io/?EIO=4&transport=websocket HTTP/1.1" 400 -
索引.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SAR</title>
<script src="https://cdn.socket.io/3.1.3/socket.io.min.js" integrity="sha384-cPwlPLvBTa3sKAgddT6krw0cJat7egBga3DJepJyrLl4Q9/5WLra3rrnMcyTyOnh" crossorigin="anonymous"></script>
</head>
<body>
<button id="ping" onclick="send()">ping</button>
<script>
var socket = io.connect("http://" + document.domain + ":" + location.port, {transports: ['websocket']});
socket.on("connect", function(){
socket.emit("ping", "Established a connection, pinging!");
});
socket.on("pong", function(response){
console.log(response)
});
function send(){
socket.emit("ping", "ping_data");
}
</script>
</body>
</html>
应用程序.py
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
import eventlet
app = Flask(__name__)
socketio = SocketIO(app, logger=True)
@app.route( '/' )
def index():
return render_template( 'index.html')
def receivedCallback():
print('Pong received by user!')
@socketio.on( 'ping' )
def handle_ping(data):
print("received", data)
socketio.emit('pong', "pong_data", callback=receivedCallback)
if __name__ == '__main__':
socketio.run(app)
解决方案
似乎通过终端运行我的主文件可以解决此问题。如果有人知道这是为什么,请分享,谢谢。:)
python app.py
推荐阅读
- bash - 用于获取 azure DevOps 中先前提交和当前提交之间差异的 Shell 脚本
- python - 带有MultiIndex DataFrame的fillna的Pandas SettingWithCopyWarning
- python - 将传感器读数限制为小数点后 4
- javascript - 选中jQuery DataTable所有页面的所有复选框(服务器端处理)
- python - 如何避免收集错误 Python Numpy
- oracle - 更新 SQL 查询单行子查询返回多行时出错
- xamarin - 如何在 xamarin 表单中制作多列选择器?
- python - 为什么这段代码不起作用,我如何获取 url 的特定部分?
- powerapps - 如何允许用户在编辑表单时向下拉列表添加值?
- php - 致命错误:未捕获的错误:无法使用 Entrada 类型的对象作为数组