Socket.D 網絡應用協議,v2.1.6 發佈

有用戶說,“Socket.D 之於 Socket,尤如 Vue 之於 Js、Mvc 之於 Http”

與其它協議的簡單對比

對比項目 socket.d http websocket rsocket socket.io
發消息(Qos0)
發送並請求(Qos1)
發送並訂閱
答覆或響應
單連接雙向通訊 有(不便) 有(不便)
數據分片 /
斷線自動重連 /
有元信息
有事件(或路徑)
有流(或消息關聯性)
Broker 模式集羣
異步 異步 同步 異步 異步 異步
接口體驗 經典 經典 經典 響應式(複雜) 經典
基礎傳輸協議 tcp, udp, ws tcp http tcp, udp, ws ws

本次更新

  • 開放 FragmentSize 可配置
  • 添加 Channel::onError 方法(屬於內部調整)
  • 添加 ChannelSupporter 接口,並簡化 Channel 構造函數(屬於內部調整)
  • 添加 SessionWrapper 包裝類(便於監視會話的支行)
  • 添加 集羣客戶端接口及創建方式 SocketD.createClusterClient()
  • 統一客戶端與集羣客戶端接口
  • 統一客戶端會話與集羣客戶端會話接口

新的集羣客戶端對比示例:

//單機客戶端
ClientSession sessoin = SocketD.createClient("sd:tcp://127.0.0.1:8602")
        .listen(new EventListener().on("hello", (s, m) -> {
            System.out.println(m);
        }))
        .open();
        
//集羣客戶端
ClientSession sessoin = SocketD.createClusterClient("sd:tcp://127.0.0.1:8602", 
                            "sd:tcp://127.0.0.1:8603", 
                            "sd:tcp://127.0.0.1:8604")
        .listen(new EventListener().on("hello", (s, m) -> {
            System.out.println(m);
        }))
        .open();

Brokeer 集羣示例:

public class Demo07_Broker {
    public static void main(String[] args) throws IOException {
        //創建 broker 服務
        SocketD.createServer("sd:tcp")
                .config(c -> c.port(8602).fragmentHandler(new BrokerFragmentHandler()))
                .listen(new BrokerListener())
                .start();
        
        //創建服務並加入 broker 集羣
        SocketD.createClient("sd:tcp://127.0.0.1:8602/?@=server")
                .listen(new EventListener().on("hello", (s, m) -> {
                    System.out.println("Server0: " + m);

                    if (m.isSubscribe() || m.isRequest()) {
                        s.replyEnd(m, new StringEntity("me to!" + m.dataAsString()));
                    }
                }))
                .open();
    }
}

代碼倉庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章