Solon rpc 之 SocketD 協議系列
Solon rpc 之 SocketD 協議 - 概述
Solon rpc 之 SocketD 協議 - 消息上報模式
Solon rpc 之 SocketD 協議 - 消息應答模式
Solon rpc 之 SocketD 協議 - 消息訂閱模式
Solon rpc 之 SocketD 協議 - RPC調用模式
Solon rpc 之 SocketD 協議 - 單連接雙向RPC模式
Solon rpc 之 SocketD 協議 - 消息加密模式html
SocketD 是一種二進制的點對點通訊協議,是一種新的網絡通訊第七層協議。旨在用於分佈式應用程序中。從這個意義上講,SocketD能夠是RSocket等其餘相似協議的替代方案。它的消息協議規範具備異步,背壓的雙向,多路複用,斷線重連,基於消息等特性。暫時只提供Java實現,目前作爲Solon rpc的sockte通道協議。java
本案以簡單的消息訂閱模式爲例演示:(即等着服務端給消息,例如配置服務的變動通知)git
<dependency> <groupId>org.noear</groupId> <artifactId>solon.boot.socketd.smartsocket</artifactId> <version>1.2.18</version> </dependency>
//啓動服務端 public class ServerApp { public static void main(String[] args) { //啓動Solon容器(SocketD bean&plugin 由solon容器管理) Solon.start(ServerApp.class, args, app -> app.enableSocketD(true)); } } //定義一個給全部會話廣播的工具 public class SessionUtil { public static void broadcast(Message message){ for(Session session : SessionManager.socket().getOpenSessions()){ session.send(message); } } public static void broadcast(String message){ for(Session session : SessionManager.socket().getOpenSessions()){ session.send(message); } } } //在須要的地方,進行廣播(例如:配置服務的更新通知) SessionUtil.broadcast("Hello client!");
//啓動客戶端 public class ClientApp { public static void main(String[] args) throws Throwable { //啓動Solon容器(SocketD bean&plugin 由solon容器管理) Solon.start(ClientApp.class, args); } } @ClientEndpoint(uri = "tcp://localhost:28080") public class ClientListener implements Listener { @Override public void onMessage(Session session, Message message) { //收到消息,業務處理 System.out.println("客戶端:我收到了:" + message); } }
https://gitee.com/noear/solon_demo/tree/master/demo28.solon_socketd_message網絡