Releases: noear/socket.d
Releases · noear/socket.d
Socket.D v2.0.17
- 调整 主题概念改成路由概念
- 调整 Flag 改为 int 类型常量,方便跨语言迁移代码
- 调整 普通常量统一转到 Constants,方便跨语言迁移
- 调整 断言接口
- 调整 RouterListener 更名为 PathListener,避免与 route 概念相冲
- 添加 HandshakeInternal 接口,方便内存提供扩展内部用函数
- 优化 FragmentHandler 接口规范
- 优化 idle timeout 日志打印
Socket.D v2.0.16
- 调整 ChannelDefault 日志记录器的归属类
- 添加 java-tcp 服务端对 idleTimeout 配置的支持
- 添加 netty-tcp 服务端对 idleTimeout 配置的支持
- 添加 java-ws 服务端对 idleTimeout 配置的支持
- 优化 channel 关闭机制,基于代码分为:协议关,异常关,用户关。方便识别原因
Socket.D v2.0.15
- 调整 通道线程池前缀名
- 调整 默认请求答复的超时为10s
- 调整 onReceive 的 debug 日志打印
- 调整 replyTimeout 更名为 requestTimeout
- 调整 简化主接口的方法名(session, message, entity, handshake)
- 添加 send 的 debug 日志打印。完善输出输入链
- 添加 META_DATA_TYPE 常量
Socket.D v2.0.14
- 添加 Router 接口,为 RouterListener 扩展提供机制。方便第三方适配时协议转换使用
- 添加 ConfigImpl 类,方便第三方适配时协议转换使用
- 调整 客户端连接超时默认改为 10 秒(之前为3秒)
Socket.D v2.0.13
- 添加 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
- 添加 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
- 调整 服务端默认端口改为 8602(用的时候一般都是自己指定)
- 调整 服务端帧流:先 s::onOpen() 后 s(Connack),以增加 url 签权支持
- 调整 SocketD.createServer, SocketD.createClient 失败提示语
- 调整 Config::peplyTimeout() 改名为 replyTimeout(之前名字写错了)
- 添加 Session::sendAndRequest(topic,entity,callback) 请求异步回调模式接口
- 优化 通道附件的线程安全问题
SocketD v2.0.6(首次发版)
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 | 结束答复 |