博客
关于我
Solon rpc 之 SocketD 协议 - 消息订阅模式
阅读量:440 次
发布时间:2019-03-06

本文共 1350 字,大约阅读时间需要 4 分钟。

Solon rpc 之 SocketD 协议系列

SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案。它的消息协议规范具有异步,背压的双向,多路复用,断线重连,基于消息等特性。暂时只提供Java实现,目前做为Solon rpc的sockte通道协议。

本案以简单的消息订阅模式为例演示:(即等着你给我来信,例如配置服务的变更通知)

服务端

//启动服务端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);    }}

附:示例源码

  • 源码:
  • 带签权的源码:

转载地址:http://etwfz.baihongyu.com/

你可能感兴趣的文章
2025版最新黑客学习网站(非常详细),零基础入门到精通,看这一篇就够了
查看>>
2025版网络工程11个高含金量证书(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
2025自学成为黑客必读的5本书籍,带你从小白进阶成大佬
查看>>
20万高薪专业-网络安全(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
23张图告诉你组建一个网络需要用到哪些硬件设备?路由器、交换机、防火墙是不是就够了?
查看>>
24 WEB漏洞-文件上传之WAF绕过及安全修复_阿里云盾waf绕过怎么修复
查看>>
#12 btrfs文件系统
查看>>
#3194. 去月球
查看>>
24.线程
查看>>
#Leetcode# 28. Implement strStr()
查看>>
$route 和 $router详解、区别、示例代码
查看>>
$scope angular在controller之外调用
查看>>
&和&&的区别
查看>>
(215:断言失败)函数‘;DFT‘中的type==CV_32FC1||type==CV_32FC2||type==CV_64FC1||type==CV_64FC2;
查看>>
(AS3)BitmapData.draw比BitmapData.copyPixel能做得更多
查看>>
(discord.py) 有没有办法让 on_message 事件查看嵌入式消息而不是普通消息?
查看>>
064:vue+openlayers根据坐标来显示点、线段、圆形、多边形
查看>>
(ios实战)单个ViewControl适配不同ios版本xib文件实现
查看>>
(Leetcode-字符串-2) 字符串运算
查看>>
(type interface {}) to type string
查看>>