找回密码
 立即注册
首页 业界区 业界 基于 SocketIO 消息协议设计报文规范,构建FastAPI上的S ...

基于 SocketIO 消息协议设计报文规范,构建FastAPI上的SocketIO 应用

季卓然 2025-10-2 11:36:41
最近在研究Python下整合FastAPI的Socket.IO 应用,对于其WebSocket的消息报文协议进行了深入了解,并整理了相关的协议内容,整合到FastAPI的WebSocket通讯处理中,用作多端的消息通讯,如聊天,系统信息通知等。
1. 总体设计


  • 统一事件名:客户端和服务端只监听/发送一个事件,例如:"message"。
  • 消息类型区分:通过 msgtype 字段区分不同的业务逻辑。
  • 通用字段:每条消息都必须包含的基础字段(如 msgtype, sender, timestamp)。
  • 扩展字段:放在 payload 里,根据不同类型自由定义。
  • 报文格式:统一为 JSON 格式。
  • 广播机制:服务端可以广播消息到所有客户端,方便消息的实时推送。
  • 房间机制:服务端可以创建、加入或离开房间,方便消息的分发。
2. 消息格式
  1. {
  2.   "msgtype": "string",        // 消息类型,如 "chat", "notification", "command"
  3.   "sender": "string",         // 发送者标识,如用户ID或系统标识
  4.   "timestamp": "number",      // 消息发送时间戳(毫秒)
  5.   "payload": {                // 消息内容(不同 msgtype 有不同格式)
  6.     // 根据 msgtype 定义不同的结构
  7.   },
  8.   "room": "string",          // 房间标识(可选),表示消息所属的房间
  9.   "touser": "string",       // 接收者标识(可选),表示消息的目标用户,多个接收者用‘|’分隔
  10.   "totag": "string",        // 接收者标签(可选),表示消息的目标用户标签,多个标签用‘|’分隔
  11. }
复制代码
例子:
  1. {
  2.   "msgtype": "chat",
  3.   "room": "room1",
  4.   "sender": "user1",
  5.   "timestamp": 1612345678901,
  6.   "payload": {
  7.     "text": "Hello, world!"
  8.   }
  9. }
复制代码
3. 消息类型

3.1 系统类消息(system)

系统类消息由系统发送,用于通知客户端或服务端状态变化。
  1. {
  2.   "msgtype": "system_notice",
  3.   "sender": "system",
  4.   "timestamp": 1694412000000,
  5.   "payload": {
  6.     "level": "info",   // info, warning, error
  7.     "text": "服务器即将维护"
  8.   }
  9. }
复制代码
3.2 聊天类消息(chat)

聊天类消息由用户发送,用于聊天。
[code]{  "msgtype": "chat_message",  "room": null,  "sender": "alice",  "timestamp": 1694412000000,  "payload": {    "text": "你好,大家!",    "extra": {      "emoji": "
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

12 小时前

举报

热心回复!
您需要登录后才可以回帖 登录 | 立即注册