我正在嘗試使用網路套接字將一些資料發送到 Flask 應用程式。從來沒有做過這樣的事情,所以我可能做錯了什么,但到目前為止我還無法接受一個連接。
目前我有 2 個 python 檔案,server.py和client.py.
server.py啟動燒瓶服務器和網路套接字,然后client.py應該能夠連接到它,發送一條訊息,該訊息列印到服務器控制臺,然后服務器應該將該訊息回顯到客戶端將接收到的位置并列印到客戶端控制臺。
但是現在Handshake status 400 BAD REQUEST當客戶端嘗試連接時我收到錯誤訊息。
這是我正在使用的代碼:
server.py :
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'hi'
socketio = SocketIO(app)
@app.route('/')
def sessions():
return "Hello World"
@socketio.on('message')
def handle_my_custom_event(mes):
print('received my event: ' str(mes))
socketio.emit('my response', mes)
if __name__ == '__main__':
socketio.run(app, debug=True)
client.py :
import websocket
websocket.enableTrace(True)
ws = websocket.create_connection("ws://localhost:5000")
print("Sending 'Hello, World'...")
ws.send("Hello, World")
print("Sent")
print("Receiving...")
result = ws.recv()
print("Received '%s'" % result)
ws.close()
我認為該server.py檔案有問題,但是,我一直在使用Flask-SocketIO 檔案,它與他們的入門示例幾乎相同。但是話又說回來,我對此也不太了解,所以我不知道問題出在哪里。
任何幫助表示贊賞謝謝!
uj5u.com熱心網友回復:
問題出在您的客戶身上。Websocket 和 socket.io 不一樣,socket.io 協議可以在引擎蓋下使用 websockets,但你不能只用 websocket 客戶端連接到 socket.io 服務器。
您要使用的是socket.io client。
如果您不介意,我強烈建議您使用FastAPI而不是燒瓶。它更簡單、更快并且有更好的檔案。在這里你可以找到帶有 FastAPI 的 websocket 服務器和客戶端的完整和作業示例
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/395542.html
上一篇:ModuleNotFoundError:在AWSElasticBeanstalk上部署Flask應用程式時沒有名為“應用程式”的模塊
