Solon

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