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则看起来有点像一朵"奇葩",看起来从名字似乎是一个消 ...
随机推荐
- flask加载配置文件的三种方法
1.第一种方法也是我们最长用到的,包括我们项目中也是采用第一种的方法,加载配置文件 配置信息全部写在config.py里面,在主app.py的文件中写入 import config app.confi ...
- RocketMQ开发者指南
1. 概念和特性 概念:介绍RocketMQ的基本概念模型 1 消息模型(Message Model) RocketMQ主要由 Producer.Broker.Consumer 三部分组成,其中Pro ...
- 【题解】The Great Divide [Uva10256]
[题解]The Great Divide [Uva10256] 传送门:\(\text{The Great Divide [Uva10256]}\) [题目描述] 输入多组数据,每组数据给定 \(n\ ...
- JavaScript:常用的一些数组遍历的方法
常用的一些遍历数组的方法: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- 突破JAVA万人面试,懂多线程者得天下
突破JAVA万人面试,懂多线程者得天下 在面试中,求职者会遇到很多棘手的问题,其中关于"线程安全"."线程同步"."线程死锁"等方面的面 ...
- pip下载超时问题详解
前言 pip下载的安装包都是在国外的pipy服务器上面,又因国内某种墙的策略,导致速度非常的慢,甚至无法访问. 于是国内很多的企业和爱好者纷纷搭建自己的服务器,定时从pypi上拉起所有的镜像文件.然后 ...
- SPI机制剖析——基于DriverManager+ServiceLoader的源码分析
我的上一篇博客类加载器与双亲委派中提到,SPI机制是一种上级类加载器调用下级类加载器的情形,因此会打破类加载的双亲委派模型.为了深入理解其中的细节,本博客详细剖析一下SPI机制,并以JDBC为例,基于 ...
- 30G 上亿数据的超大文件,如何快速导入生产环境?
Hello,大家好,我是楼下小黑哥~ 如果给你一个包含一亿行数据的超大文件,让你在一周之内将数据转化导入生产数据库,你会如何操作? 上面的问题其实是小黑哥前段时间接到一个真实的业务需求,将一个老系统历 ...
- 回顾 2020 年 GitHub 的大事件,你知道多少?
作者:HelloGitHub-小鱼干 这里是 HelloGitHub 出品的年度盘点系列,本期我们将盘点 GitHub 在 2020 发生的大事件,回顾一下今年 GitHub 给我们带来了那些惊喜.故 ...
- CyclicBarrier回环屏障深度解析
1. 前沿 从上一节的CountDownLatch的学习,我们发现其只能使用一次,当state递减为0后,就没有用了,需要重新新建一个计数器.那么我们有没有可以复用的计数器呢?当然,JUC包给我们提供 ...