python Flask_socketio 无法获取消息

问题描述 投票:0回答:1
  1. 我正在尝试使用 python Flask_socketio 与邮递员前端连接,但来自邮递员的“hello”消息无法在Python中读取。

据说:

文件“C:\Users\w\AppData\Local\Programs\Python\Python37\lib\site-packages ngineio\packet.py”,第 65 行,解码中 self.packet_type = int(encoded_packet[0]) ValueError:以 10 为基数的 int() 的文字无效:'h'

似乎python正在尝试将第一个字符的消息“hello”解码为消息的长度。我不知道。

  1. 这是邮递员截图:

  2. 这是代码:

from flask import Flask, render_template,jsonify
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO()
socketio.init_app(app, cors_allowed_origins='*')

@socketio.on('connect')
def index():
    return render_template('index.html')

@socketio.on('my_event')
def handle_my_custom_event(json):
    print('received json: ' + str(json))
    socketio.emit('my_response', json)

@socketio.on('connect')
def test_connect():
    print('Client connected')

@socketio.on('disconnect')
def disconnect_msg():
    print('client disconnected.')

@socketio.on('my_event')
def mtest_message(message):
    print(message)
    emit('my_response',
         {'data': message['data'], 'count': 1})

@socketio.on('message')
def handle_message(data):
    print('received message: ' + data)

if __name__ == '__main__':
    socketio.run(app,host="0.0.0.0",port=8081,debug=True,allow_unsafe_werkzeug=True)

还有我的邮递员记录:

python flask flask-socketio
1个回答
0
投票

感谢米格尔·格林伯格 我对 websocket 和 socketio 感到困惑,这是正确的代码:

import asyncio
import websockets


async def echo(websocket, path):
    # fetch msg
    async for message in websocket:
        print("got a message:{}".format(message))
        await websocket.send(message)


async def main():
    # start a websocket server
    async with websockets.serve(echo, "localhost", 5000):
        await asyncio.Future()  # run forever

print("server start")
asyncio.run(main())
© www.soinside.com 2019 - 2024. All rights reserved.