python - 无法使用 Flask 连接到 SocketIO
问题描述
我正在尝试创建一个使用 SocketIO 的应用程序,我正在使用 Flask-socketio 并使用Socket.io 客户端工具来测试套接字的连接。我已经按照flask-socketio的文档中所示完成了它,但我无法连接套接字。连接时出现以下错误:
编码:
app = Flask(__name__)
CORS(app)
app.config.from_object(Config)
socketio = SocketIO(app)
jwt = JWTManager(app)
db = MongoEngine(app)
api = Api(app)
@app.route('/')
def messageReceived(methods=None):
if methods is None:
methods = ['GET', 'POST']
print('message was received!!!')
# @socketio.on('connect', namespace='/test')
# def test_connect():
# print('Client connected')
#
#
# @socketio.on('disconnect', namespace='/test')
# def test_disconnect():
# print('Client disconnected')
@socketio.on('my event')
def handle_my_custom_event(json, methods=None):
if methods is None:
methods = ['GET', 'POST']
print('received my event: ' + str(json))
socketio.emit('my response', json, callback=messageReceived)
if __name__ == '__main__':
app.run(debug=True, host='localhost', port=5000)
socketio.run(app, logger=True, engineio_logger=True)
解决方案
Flask-SocketIO 服务器默认执行同源策略。您需要将 Socket.IO 测试工具中的源配置为允许的源。例如:
socketio = SocketIO(app, cors_allowed_origins="https://amritb.github.io")
推荐阅读
- macos - 如何在 Windows 上测试 Mac 站点
- excel - 如何使用 VBA 查找 2 列与 ANOTHER 2 列的匹配?
- javascript - 已经有搜索过滤表 js 代码 - 工作正常,只是想有高亮的文本结果。有什么想法吗?
- sqlite - 在 SQLite 中选择所有具有 MAX 值的行?
- python - amixer:无效的命令
- firebase - 为什么允许从客户端写入 Firebase 是可以的?
- c++ - TLE 尝试使用 Dinic 算法解决 SPOJ 上的 Fastflow
- angular - 向 Angular 应用程序添加国际化
- c# - C# 为字符串数组的每个项目设置特定的开始和结束位置
- fortran - 使用 gnu FFTW 3.3.8 计算具有复杂输入的一维 FFT