@@ -8,19 +8,38 @@ WebSocket 是一种在单个 TCP 连接上进行**全双工通信**的协议
8
8
9
9
因此协议选用 WebSocket 作为消息传递的主要协议之一
10
10
11
+ ## 握手与鉴权
12
+
13
+ 服务端需要在 ` /message ` 的路由下应答客户端
14
+
15
+ 该信道为且只为消息传输信道,文件资源传输需要使用 http
16
+
17
+ 客户端发起 101 http 请求升级协议到 websocket 时应携带客户端与服务端约定的** 安全密钥**
18
+
19
+ 携带方式为 ` token ` 参数,如 ` https://server.catkatpowered.com/message?token=1234567890 `
20
+
21
+ 服务端对此 token 进行鉴权,若不通过则** 拒绝握手**
22
+
23
+ ## 安全
24
+
25
+ 尽可能的使用带有 ssl 的 websockets 协议,特别是对于暴露在公网的服务端来说,ssl 协议能保护链路信息
26
+
27
+ 强烈建议客户端与服务端使用全 ssl 通信
28
+
11
29
## 数据包
12
30
13
31
本协议中,通常情况下一串完整的 json 被称之为数据包
14
32
15
33
通过定义数据包的键值对,可以表达大部分所需数据
16
34
17
- 这里将数据包分为以下类型
35
+ 这里将数据包分为以下四个类型
18
36
19
- | 数据包类型 | 描述 | 相关讨论 |
20
- | :--------: | :----------------------------------------------: | :------: |
21
- | 描述数据包 | 描述服务端、IM 连接桥、插件等信息 | |
22
- | 消息数据包 | 表达 IM 的消息,是其他协议中的 ** 事件(Event)** | |
23
- | 扩展数据包 | 由 IM 桥或插件提供的独有的数据格式 | |
37
+ | 数据包类型 | 描述 | 相关讨论 |
38
+ | :----------: | :----------------------------------------------: | :------: |
39
+ | 描述数据包 | 描述服务端、IM 连接桥、插件等信息 | |
40
+ | 消息数据包 | 表达 IM 的消息,是其他协议中的 ** 事件(Event)** | |
41
+ | 凭据数据包 | 提供用于以 http 协议获取资源的凭据(Token) | |
42
+ | 自定义数据包 | 由 IM 桥或插件提供的独有的数据格式 | |
24
43
25
44
此处类型是一层逻辑分类,并非实际意义上有被分配键值对属性的数据包
26
45
@@ -29,13 +48,5 @@ WebSocket 是一种在单个 TCP 连接上进行**全双工通信**的协议
29
48
此数据包分类下的数据包是包含各个模块所需提供给客户端对程序自身描述的描述数据包
30
49
31
50
- [ 服务器描述包] ( websocket-description-server-packet.md )
32
- - [ 桥描述包] ( websocket-description-bridge-packet.md )
33
- - [ 插件描述包] ( websocket-description-description-packet.md )
34
-
35
- ## 消息数据包
36
-
37
- 此数据包分类下的数据包描述与桥交互所需的信息
38
-
39
- ## 扩展数据包
51
+ - [ 扩展描述包] ( websocket-description-description-packet.md )
40
52
41
- 此数据包分类下的数据包是由桥或插件提供的特有数据包格式,各个模块应在它们的文档中描述这些特有数据包
0 commit comments