You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Flask-SocketIO无法接收Postman发送的消息问题求助

Flask-SocketIO与Postman连接无法接收消息的问题解决

我尝试使用Python的Flask-SocketIO与Postman进行连接,但无法读取Postman发送的"hello"消息,报错信息如下:

File "C:\Users\w\AppData\Local\Programs\Python\Python37\lib\site-packages\engineio\packet.py", line 65, in decode
self.packet_type = int(encoded_packet[0])
ValueError: invalid literal for int() with base 10: 'h'

从报错信息能看出,服务端试图将消息"hello"的首字符解码为整数类型的消息标识,最终导致解析失败。

我的代码

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)

问题原因与解决方法

核心原因

Postman发送的纯文本"hello"不符合Engine.IO协议的消息格式。Flask-SocketIO基于Engine.IO协议运行,要求消息必须按协议规定的格式封装,不能直接发送原始文本。

解决步骤

  1. Postman发送规范

    • 确认Postman建立的是SocketIO类型连接(而非普通WebSocket)
    • 发送消息时选择Event类型,事件名填写message(对应代码中@socketio.on('message')的处理函数)
    • 在Payload区域填入带引号的合法JSON字符串:"hello"
  2. 代码优化
    代码中存在两个被@socketio.on('connect')装饰的函数,这会导致只有最后一个函数生效,建议合并为一个:

    @socketio.on('connect')
    def test_connect():
        print('Client connected')
        # 若不需要在连接时返回模板,可删除原index函数,connect事件无需返回模板
    

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:30:03