Solon rpc 之 SocketD 协议 - 消息加密模式
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 协议 - 消息加密模式
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);
//设置加强协议,使用加密协议(客户端也要一同设置)
SocketD.setProtocol(new MessageProtocolSecret() {
@Override
public byte[] encrypt(byte[] bytes) throws Exception {
return EncryptUtils.aesEncrypt(bytes,"pLft36Ok5zfmP6zI");
}
@Override
public byte[] decrypt(byte[] bytes) throws Exception {
return EncryptUtils.aesDecrypt(bytes,"pLft36Ok5zfmP6zI");
}
});
});
}
}
//定义服务端监听
@ServerEndpoint
public class ServerListener implements Listener {
@Override
public void onOpen(Session session) {
System.out.println("有客户端链上来喽...");
}
@Override
public void onMessage(Session session, Message message) {
//收到消息,做业务处理
if(message.flag() != MessageFlag.heartbeat){
System.out.println("服务端:我收到心跳");
}else {
System.out.println("服务端:我收到:" + message.bodyAsString());
}
}
}
客户端
//启动客户端
public class ClientApp {
public static void main(String[] args) throws Throwable {
//启动Solon容器(SocketD bean&plugin 由solon容器管理)
Solon.start(ClientApp.class, args, app->{
//设置加强协议,使用加密协议(服务端也要一同设置)
SocketD.setProtocol(new MessageProtocolSecret() {
@Override
public byte[] encrypt(byte[] bytes) throws Exception {
return EncryptUtils.aesEncrypt(bytes,"pLft36Ok5zfmP6zI");
}
@Override
public byte[] decrypt(byte[] bytes) throws Exception {
return EncryptUtils.aesDecrypt(bytes,"pLft36Ok5zfmP6zI");
}
});
});
//创建会话(如果后端是WebSocekt,协议头为:ws)
Session session = SocketD.createSession("tcp://localhost:28080");
//设定30秒自动上发心跳(如果断开了,也尝试自动重链)
session.sendHeartbeatAuto(30);
//上报消息
session.send("Helloworld server!");
}
}
附:示例源码
Solon rpc 之 SocketD 协议 - 消息加密模式的更多相关文章
- Solon rpc 之 SocketD 协议 - 消息上报模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息应答模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息订阅模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - RPC调用模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 单链接双向RPC模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - RPC鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议
1. 简介 SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议.旨在用于分布式应用程序中.从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案.它的消息协 ...
- 浅议NetMQ常见模式和消息加密机制
浅议NetMQ常见模式和消息加密机制 概述 在传统企业级开发中,消息队列机制已经成为一种非常常见的技术实现手段,而基于NetMQ则看起来有点像一朵"奇葩",看起来从名字似乎是一个消 ...
随机推荐
- 本文帮你在 Unix 下玩转 C 语言
shell是一种特殊的应用程序(命令行解释器),他为运行其他应用程序提供了一个接口. posix规范了操作系统是什么样 每个进程都有一个工作目录(又叫当前目录),相对路径都是从工作目录开始解释. Ct ...
- oracle 时间段查询
<select id="selectByRzrq" resultMap="BaseResultMap" parameterType="java. ...
- STL——容器(deque) 元素的存取&迭代器
1. deque 的数据存取 这个部分和 vector 几乎一样 第一 使用下标操作 dequeName[0] = 100; //小心越界 第二 使用at 方法 如: dequeName.at(2 ...
- 20201126-1 txt文件筛选与读写【】
Exercise 1import os # 设置文件夹路径为'工作文件夹',获取文件夹下的所有文件和文件夹名称 path = './工作文件夹/' files_list = os.listdir(pa ...
- 三、TestNG的基本注解(1)
Before类别和After类别注解 举例说明 创建两个TestNGAnnotationTest.java和TestNGAnnotationTest2.java的类 TestNGAnnotationT ...
- Swing01-概述
1.Swing概述 Swing百分之百由Java本身实现,是一套轻量级组件(完全由Java实现的组件叫做轻量级套件,依赖于本地平台的套件称之为重量级套件).Swing不再依赖于平台的GUI,因此真正做 ...
- Go语言(1)——程序结构
程序结构 基础部分仅仅列举和其他语言不一样的地方(C语言为例). 声明 Go语言有四个主要声明:var.const.type.func,类似于C语言中的变量,常量,结构体和函数. package ma ...
- 群晖DS218+部署Harbor(1.10.3)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- C 语言运算符与分支循环小记
1. 前导内容 · 使用sizeof()统计各种数据类型占用字节数 · 进制转换问题 · if语句基本语法 · switch语句基本语法 2. 运算符 · 基本概念 · 左值 右值 · 优先级结合性 ...
- 微服务之间如何共享DTO?
1. 概述 近些年来,微服务变得越来越流行.微服务基本特征是模块化.独立.易于扩展的.它们之间需要协同工作并交换数据.为了实现这一点,我们创建了名为 DTO 的共享数据传输对象.在本文中,我们将介绍在 ...