SocketD 协议介绍
从某种意义上,SocketD 是 RSocket 等其他类似协议的替代方案。它的消息协议规范具有异步,双向通讯,多路复用,断线重连,基于消息等特性。目前也做为 Solon Rpc 的 Socket 通道协议
。
1、背景
RSocket 使用类似 RxJava 的接口风格,一般的同学上手会比较困难。相对的,SocketD 更适合传统使用习惯,这也是推出的重要原因。
2、特性
具有与 RSocket 非常相似的特性:
- 具有语言无关性的二进制通信协议
- 异步非阻塞消息驱动通信
- 可以进行流量控制、连接恢复
- 天然支持双向通信。如:单链接双向RPC调用
- 更加适合分布式通信场景
3、三种交互模型,适应不同应用场景
- Send(msg):只发送不响应
- 在不需要响应时非常有用。例如,非关键事件日志记录
- SendAndResponse(msg):发送并等待响应
- 类似Http的请求/响应模型。它是异步和多路复用的
- SendAndCallback(msg, (msg2)->{}):发送并在有响应时回调
- 类似Ajax异步回调
4、两种协议格式
- 容器消息,用于实现消息加密或压缩之类非业务处理
- flag = 1 : container
- 内容消息,用于承载业务内容
- flag = 10 : message
- flag = 11 : heartbeat message
- flag = 12 : handshake message
- flag = 13 : response message