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

WebSocket消息格式求助:带%符号的非标准JSON解析与发送问题

WebSocket自定义协议解析与发送方案

一、%符号的含义

这是一套自定义的WebSocket消息协议,%是字段分隔符,用来把消息拆分成不同的协议头字段和业务数据部分。你的消息拆解后对应模块:

  • %xt%:协议类型标识(自定义消息前缀,用于服务器识别消息类别)
  • EmpireEx_2:业务模块/指令集名称(服务器端对应的处理模块标识)
  • ssi:子操作类型(具体的指令动作标记)
  • 1:附加参数(可能是版本号、会话ID或参数标记)
  • {"TX":438,"TY":1218,"KID":1}:实际承载业务逻辑的JSON数据
    末尾的%是消息结束符,用来标记整个消息的边界。

二、正确的发送方法

这个格式不是纯JSON,是自定义协议头+JSON数据的复合结构,不能直接用JSON工具或URL编码工具处理,正确步骤如下:

  1. 先构造业务JSON对象:
const businessData = {
  "TX": 438,
  "TY": 1218,
  "KID": 1
};
  1. 按照协议格式拼接成完整消息字符串:
const wsMessage = `%xt%EmpireEx_2%ssi%1%${JSON.stringify(businessData)}%`;
  1. 直接通过WebSocket实例发送这个拼接好的字符串:
ws.send(wsMessage); // ws为你的WebSocket实例

三、为什么之前的方法无效

  • JSON.stringify/JSON.parse:这类工具仅处理标准JSON结构,你的消息包含协议头和分隔符,不属于纯JSON,直接处理会触发解析错误。
  • encodeURI/decodeURI:这类工具用于URL编码转义,而此处的%是协议规定的分隔符,不是URL转义字符,使用后会把%转成%25,破坏原有协议格式,导致服务器无法识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:30:59