|
3 долоо хоног өмнө | |
---|---|---|
.. | ||
tcp2 | 3 долоо хоног өмнө | |
util | 3 долоо хоног өмнө | |
ws2 | 3 долоо хоног өмнө | |
README.md | 3 долоо хоног өмнө | |
conn.go | 1 сар өмнө |
先实现 tcp 和 websocket 方式的线路连接。
id 号为 0 表示不需要回应的消息 id 号大于 65500 为内部使用。
建立连接后发送第一个数据包,包括下面的内容:
id(65502)+proto(string)+version(uint8)+option(byte)+channel(string)+auth([]byte)
这个数据包必须是除混淆包(如果有的话)之后的第一个包,如果解析不成功则直接断开连接。 proto 的字符长度不能超过 255 option 选项,目前只使用最低位,如果为 1 表示启用数据压缩。是否启用数据压缩由客户端决定,如果客户端不支持数据压缩,那就无法启用。 channel 的字符长度不能超过 65535 auth 对应的是应用层的认证,如果没有的话可以为空,具体的认证方式由应用层决定。 auth 的数据结构由应用层自己决定。
id(uint16)
id(uint16)+cmdLen(uint8)+cmd(string)+option(byte)+data([]byte)
option 选项,如果不支持压缩的功能,则选项字节不需要。 目前只使用最低位,如果为 1 表示当前数据压缩。
id(uint16)+state(uint8)+option(byte)+data([]byte)
其中 state 字节的最高位 1,需要 &0x7F 处理。
option 选项,如果不支持压缩的功能,则选项字节不需要。 目前只使用最低位,如果为 1 表示当前数据压缩。