Socket.D 協議?
Socket.D 是一個基于事件和語義消息流的網絡應用協議。在微服務、移動應用、物聯網等場景,可替代 http、websocket 等。協議詳情參考《官網介紹》。
-
支持: tcp, udp, ws, kcp 傳輸。
-
目前:java,kotlin,javascript,node.js,python,android 語言環境可用。go,rust,c/c++,.net 正在開發中。
最近更新
(1) for Java
- 添加 靜態 spi 加載方式(避免某些打包方案讓 java spi 失效)
- 添加 新的每秒幀流量控制接口 TrafficLimiter
- 添加 Listener:onReply, onSend 方法,方便幀流量統計
- 添加 FrameIoHandler 接口,強化 Processor 的幀輸入輸出強控地位
- 添加 SessionUtils 工具類
- 添加 Session::isActive()
- 添加 java-websocket 適配子協議驗證(避免亂連)
- 添加 spring-websocket 適配子協議驗證(避免亂連)
- 添加 BroadcastBroker 接口(提供類似 stomp 的體驗)
- 添加 LoadBalancer:isActive 接口
- 添加 內存占比限制支持
- 添加 EntityMetas.META_X_UNLIMITED
- 添加 EntityMetas.META_X_HASH, 另 META_X_Hash 標為棄用
- 添加 Session::attrDel 接口
- 添加 ListenerWrapper 類,方便應用定制
- 優化 java-websocket 適配,增加 header 轉移
- 優化 spring-websocket 適配,增加 header 轉移
- 優化 java-websocket 適配,增加 setReuseAddr(true) 配置
- 修復 server.stop 后不能自動退出的進程問題
- 修復 session.close() 后不能自動退出的進程問題
- smartsocket 升為 1.5.46
(2) for Python
- 優化 Session::send_alarm 申明,支持 alarm: str|Entity
- 添加 Listener:onReply, onSend 方法,方便幀流量統計
- 添加 FrameIoHandler 接口,強化 Processor 的幀輸入輸出強控地位
- 添加 SessionUtils 工具類
- 添加 Session::isActive()
- 添加 BroadcastBroker 接口(提供類似 stomp 的體驗)
- 添加 websocket 適配子協議驗證(避免亂連)
- 添加 EntityMetas.META_X_UNLIMITED
- 優化 流的超時處理
- 調整 語言版本需求改為 3.10
- 修復 stream.on_reply 非異步調用出錯的問題
(3) for JavaScript
- 添加 Listener:onReply, onSend 方法,方便幀流量統計
- 添加 FrameIoHandler 接口,強化 Processor 的幀輸入輸出強控地位
- 添加 SessionUtils 工具類
- 添加 Session::isActive()
- 添加 BroadcastBroker 接口(提供類似 stomp 的體驗)
- 添加 websocket 適配子協議驗證(避免亂連)
- 添加 EntityMetas.META_X_UNLIMITED
- 添加 提供者手動注冊接口
- 調整 代碼結構與 java,python 盡量保持相近
- 優化 SocketD.newEntity 與小程序的兼容性(小程不支持 File、Blob 類型)
- 修復 wechat 的環境識別問題
- 修復 在 ios/android 上檢測 TextEncoder 出錯的問題(2.3.10 出現的)
視頻演示效果:
- for H5
- https://www.bilibili.com/video/BV1ck4y197BV/
- 演示源碼
- for UniAPP
- https://www.bilibili.com/video/BV1T94y1T7sp/
- 演示源碼
代碼倉庫:
- https://gitee.com/noear/socketd
- https://github.com/noear/socketd
官網:
- https://socketd.noear.org