尝试将Postman SocketIO连接到Flask API并得到400

问题描述 投票:0回答:1

我使用 Flask-SocketIO 5.3.2 实现了 Flask SocketIO 服务器,当我使用 JavaScript 客户端测试它时,即使来自不同来源,它也运行良好。但是当我尝试使用 Postman SocketIO 连接到服务器时,我收到 Error: Unexpected server response: 400 in Postman and Flask Server islogging SocketIO 400 Error。附件是邮递员响应和服务器日志的屏幕截图。

服务器日志:

邮递员回复:

flask postman flask-socketio
1个回答
1
投票

原因是开发服务器内置的flask使用轮询,而postman客户端使用websocket。所以我使用 gevent 为服务器配置了 websocket 并解决了问题。您可以从这个讨论Reddit Thread中获得更多相关信息,这就是我的想法。

代码片段:

from flask import Flask
from flask_socketio import SocketIO
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler

app = Flask(__name__)
socketio = SocketIO(logger=True, engineio_logger=True)
socketio.init_app(app)

@socketio.on("message")
def message(data):
    print(data)
    socketio.emit("myevent", "EVENT DATA HERE...")

if __name__ == "__main__":
    pywsgi.WSGIServer(("", PORT_NUMBER), app, handler_class=WebSocketHandler).serve_forever()

使用以下命令运行应用程序(仅在 Ubuntu 上测试名为 app.py 的应用程序文件):

python3 -m app
© www.soinside.com 2019 - 2024. All rights reserved.