服务端:
from flask import Flask
from flask_sockets import Sockets
import datetime
app = Flask(__name__)
sockets = Sockets(app)
from flask_cors import *
CORS(app, supports_credentials=True)
@sockets.route('/test')
def echo_socket(ws):
print("hello")
while not ws.closed:
msg = ws.receive().decode() # 接收的为字节
print('接收:', msg)
now = datetime.datetime.now().isoformat()
ws.send(now) # 发送数据
@app.route('/')
def hello_world():
return 'Hello Flask Socket!'
if __name__ == "__main__":
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
server = pywsgi.WSGIServer(('127.0.0.1', 8080), app, handler_class=WebSocketHandler)
print('server start')
server.serve_forever()
客户端:
import websocket
ws = websocket.WebSocket()
ws.connect('ws://127.0.0.1:8080/test')
while True:
text = input('发送:')
ws.send_binary(text.encode())
data = ws.recv()
print('接收:', data)
werkzeug.routing.WebsocketMismatch: 400 Bad Request报错处理
网上的解决方法基本上都是降低 Werkzeug Flask的版本
这个老哥的方式是更改routing.py的检测 ->跳转
将此代码注释后可正常交互