Skip to content

Releases: noear/socket.d

Socket.D v2.0.17

21 Nov 16:17
Compare
Choose a tag to compare
  • 调整 主题概念改成路由概念
  • 调整 Flag 改为 int 类型常量,方便跨语言迁移代码
  • 调整 普通常量统一转到 Constants,方便跨语言迁移
  • 调整 断言接口
  • 调整 RouterListener 更名为 PathListener,避免与 route 概念相冲
  • 添加 HandshakeInternal 接口,方便内存提供扩展内部用函数
  • 优化 FragmentHandler 接口规范
  • 优化 idle timeout 日志打印

Socket.D v2.0.16

19 Nov 05:17
Compare
Choose a tag to compare
  • 调整 ChannelDefault 日志记录器的归属类
  • 添加 java-tcp 服务端对 idleTimeout 配置的支持
  • 添加 netty-tcp 服务端对 idleTimeout 配置的支持
  • 添加 java-ws 服务端对 idleTimeout 配置的支持
  • 优化 channel 关闭机制,基于代码分为:协议关,异常关,用户关。方便识别原因

Socket.D v2.0.15

13 Nov 07:08
Compare
Choose a tag to compare
  • 调整 通道线程池前缀名
  • 调整 默认请求答复的超时为10s
  • 调整 onReceive 的 debug 日志打印
  • 调整 replyTimeout 更名为 requestTimeout
  • 调整 简化主接口的方法名(session, message, entity, handshake)
  • 添加 send 的 debug 日志打印。完善输出输入链
  • 添加 META_DATA_TYPE 常量

Socket.D v2.0.14

12 Nov 04:43
Compare
Choose a tag to compare
  • 添加 Router 接口,为 RouterListener 扩展提供机制。方便第三方适配时协议转换使用
  • 添加 ConfigImpl 类,方便第三方适配时协议转换使用
  • 调整 客户端连接超时默认改为 10 秒(之前为3秒)

Socket.D v2.0.13

11 Nov 13:51
Compare
Choose a tag to compare
  • 添加 Entity::getDataAsString 缓存处理,读一次可以复用
  • 添加 Server::title 接口。用于第三方集成时打印
  • 添加 Session 获取路径和参数的接口。缩短获取路径
  • 添加 通道与会话关键点的 debug 日志
  • 添加 双向 sendAndRequest 二重循环互调支持
  • 添加 config::channelExecutor,取消原有执行器概念
  • 优化 bio 在重启时,弃用之前已停的线程池。避免重启时还不能用
  • 优化 queryString, metaString 解码实现
  • 优化 SocketdTimeoutException 时,添加时间信息
  • 优化 Client::open,打开时同步原始通道与客户通道的握手信息
  • 优化 签复接收改为异步模式,避免卡住Io线程
  • 优化 onMessage 事件转发改为异步模式,避免卡住Io线程
  • 优化 sendAndRequest 失败时的异常提示
  • 优化 websocket 附件获取通道的方式,避免出现通道为 null 的可能
  • 调整 原接口工厂概念改为接口提供者概念
  • 调整 SocketD.createServer 参数改为 string。调整配置的方式,改成为 client 相同

Socket.D v2.0.12

09 Nov 14:45
Compare
Choose a tag to compare
  • 添加 Handshake::getScheme 接口
  • 添加 Handshake::getPath 接口
  • 添加 Session:reconnect 手动重链接口
  • 添加 Entity:getDataAsBytes 接口
  • 添加 ClientConfigHandler,ServerConfigHandler 接口
  • 添加 客户端监听器内的 session 手动重连能力(用户可控制关闭时,是否马上重连)
  • 添加 "sd:" 协议头支持(方便用户识别协议的区别)
  • 添加 idleTimeout 配置支持(默认为 0)
  • 添加 三个附助监听器 RouterListener,BuilderListener,RouterListener(简化开发)
  • 添加 url 鉴权支持
  • 简化 握手与关闭流程
  • 优化 Handshake 交互流(有拒绝异常,与超时异常)
  • 优化 Processor 接口设计(面向通道,不再面向会话)
  • 优化 通道有效检测,增加是否关闭条件
  • 取消 Session::sendAndRequest(topic,entity,callback) 请求异步回调模式接口(感觉,宜少不宜多)

SocketD v2.0.7

06 Nov 11:59
Compare
Choose a tag to compare
  • 调整 服务端默认端口改为 8602(用的时候一般都是自己指定)
  • 调整 服务端帧流:先 s::onOpen() 后 s(Connack),以增加 url 签权支持
  • 调整 SocketD.createServer, SocketD.createClient 失败提示语
  • 调整 Config::peplyTimeout() 改名为 replyTimeout(之前名字写错了)
  • 添加 Session::sendAndRequest(topic,entity,callback) 请求异步回调模式接口
  • 优化 通道附件的线程安全问题

SocketD v2.0.6(首次发版)

05 Nov 16:47
Compare
Choose a tag to compare

SocketD 是一个基于连接的、可扩展的、消息驱动的传输协议。具有异步,背压流控,双向通讯,多路复用,断线重连,支持签权,基于主题消息等特性。

  • 具有语言无关性的二进制通信协议(支持 tcp, ws, udp)
  • 异步非阻塞消息驱动通信
  • 可以进行流量控制、自动连接恢复
  • 支持双向通信(如:单链接双向 RPC 接口调用)
  • 更加适合分布式通信场景
  • 支持 ssl,支持国密 ssl
  • 消息有由元信息和数据组成,通过元信息实现可扩展性
  • 自动分片(数据超出 16Mb,会自动分片、自动重组)
  • 接口简单

适用场景:

可用于 MSG、RPC、IM、MQ,等一些的场景开发,可替代 http, websocket, grpc 等一些协议。比如移动设备与服务器的连接,比如一些微服务场景等等。

协议格式:

  • codec
[len:int][flag:int][sid:str(<64)][\n][topic:str(<512)][\n][metaString:str(<4k)][\n][data:bts(<16m)]
  • flag
Flag Server Client 备注
Unknown ::close() ::close()
Connect / c(Connect)->s
Connack s(Connack),s::c.onOpen()->c s(Connack)->c::onOpen()
Ping / c(Ping)->s
Pong s(Pong)->c /
Close s(Close)->c c(Close)->s 用于特殊场景(如:T人)
Message s(Message)->c c(Message)->s
Request s(Request)->c(Reply)->s c(Request)->s(Reply)->c
Subscribe s(Subscribe)->c(Reply?..)->s c(Subscribe)->s(Reply?..)->c
Reply s(Reply)->c c(Reply)->s
ReplyEnd s(ReplyEnd)->c c(ReplyEnd)->s 结束答复