Skip to content

Latest commit

 

History

History
66 lines (37 loc) · 2.11 KB

protocol-zh.md

File metadata and controls

66 lines (37 loc) · 2.11 KB

Protocol 协议说明

基本:

  • 本协议暂时基于WebSocket,属于内网协议
  • 为方便调试,直接通过传递字符串进行信息交换,在字符串中使用|分割信息体
  • 未来将使用可靠性可选的、基于UDP的虚拟连接协议,以字节方式传输;加强安全性,以便开放到公网

协议种类:

pid位于数据的第一部分。一般由一个数字与一个简写字母组成。数字代表协议版本号,后方字母代表协议分类。

Client发送给Nexus的有以下类型:

  • 1h Hello 握手
  • 1c Channel 订阅频道
  • 1t Transmit 发送消息
  • 1d Disconnect 断开连接

Nexus主动发送给Client的有以下类型:

  • 1r Receive 接收消息

协议内容:

Tip:为了防止注入,涉及到第三方可编辑的字符串部分,都特别加入了字符串长度用于检验。

1h Hello 握手:

组合方式:1h|名称长度(字节)|名称

握手是为了上报服务端,该客户端的名称,用于发送消息时告知其他客户端消息的来源。

例如:1h|12|abcdef123456

1c Channel 订阅频道:

组合方式:1c|频道名字长度(字节)|频道名字|需要订阅的时间(秒部分)|需要订阅的时间(纳秒部分)

订阅就像续命,客户端需要定时订阅频道,来告知服务端需要向我发送哪些频道的消息。

例如: 订阅c/lobby频道五分钟 1c|7|c/lobby|300|0

1t Transmit 发送消息:

组合方式:1t|频道长度(字节)|频道名字|消息长度(字节)|消息

客户端发送给服务端

例如: 发送helloworld到c/lobby频道 1t|7|c/lobby|10|helloworld

1d Disconnect 断开连接:

组合方式:1d|理由长度(字节)|理由

发送后,应由服务端断开连接

例如:1d|11|just logout

1r Receive 接收消息:

组合方式:1r|消息来源字符串长度(字节)|消息来源|频道字符串长度(字节)|频道|消息字符串长度(字节)|消息

客户端订阅后,由中转枢纽主动发送给客户端。中转枢纽将忽略所有客户端发来的1r类型消息。