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();
}
}
代码仓库
Socket.D 网络应用协议,v2.1.6 发布的更多相关文章
- 网络编程之Socket的TCP协议实现客户端与客户端之间的通信
我认为当你学完某个知识点后,最好是做一个实实在在的小案例.这样才能更好对知识的运用与掌握 如果你看了我前两篇关于socket通信原理的入门文章.我相信对于做出我这个小案列是完全没有问题的!! 既然是小 ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布
(新年巨献) RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布 历时数月,RDIFramework.NET V2.8版本发布了,感谢大家的支持. RDIFram ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布
历时数月,RDIFramework.NET V2.7 版本发布了,感谢大家的支持. RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系 ...
- ActionScript简单实现Socket Tcp应用协议分析器
转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协 ...
- go-wingui 2018 全新 v2.0 版本发布,包含重大更新!
go-wingui 2018 全新 v2.0 版本发布,包含重大更新!使用新版CEF内核Chromium 63.0.3239.109,页面可以使用最新的css3,html5技术.使用delphi7重写 ...
- 移动开发首页业界资讯移动应用平台技术专题 输入您要搜索的内容 基于Java Socket的自定义协议,实现Android与服务器的长连接(二)
在阅读本文前需要对socket以及自定义协议有一个基本的了解,可以先查看上一篇文章<基于Java Socket的自定义协议,实现Android与服务器的长连接(一)>学习相关的基础知识点. ...
- socket之UDP协议,并发编程介绍,操作系统发展史
socket之UDP协议 1.UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection 参考 ...
- Http,Socket,TCP/IP 协议简述
Http,Socket,TCP/IP 协议简述:https://blog.csdn.net/gordohu/article/details/54097841 TCP/IP协议,HTTP协议与webSo ...
- day34 异常处理、断言、socket之ftp协议
Python之路,Day20 = 异常处理.断言.socket之ftp协议 参考博客:http://www.cnblogs.com/metianzing/articles/7148191.html 异 ...
- XXL-JOB v2.3.0 发布 | 易用性增强
转: XXL-JOB v2.3.0 发布 | 易用性增强 v2.3.0 Release Notes 1.[新增]调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略.立即补偿触发一次等: 2. ...
随机推荐
- Linux 网络发包流程
哈喽大家好,我是咸鱼 之前咸鱼在<Linux 网络收包流程>一文中介绍了 Linux 是如何实现网络接收数据包的 简单回顾一下: 数据到达网卡之后,网卡通过 DMA 将数据放到内存分配好的 ...
- SQL Server 2022新功能概览
开始之前 本篇文章仅仅是针对SQL Server 2022新推出功能的概览,以及我个人作为用户视角对于每个功能的理解,有些功能会结合一些我的经验进行描述,实际上,SQL Server 2022在引 ...
- 【路由器】Breed 介绍、刷入和使用
目录 介绍 文件说明 刷入 Breed 通过 Breed 刷机 其他功能 参考资料 介绍 Breed 是国内个人 hackpascal 开发的闭源 Bootloader,也被称为"不死鸟&q ...
- Web通用漏洞--sql注入
SQL注入 mysql注入目的:获取当前web权限 mysql注入--常规查询&union联合查询 MYSQL--Web组成架构 服务器搭建web服务可能存在多个站点搭建在一台服务器中,数据集 ...
- Python 基础面试第三弹
1. 获取当前目录下所有文件名 import os def get_all_files(directory): file_list = [] # os.walk返回一个生成器,每次迭代时返回当前目录路 ...
- LeetCode46全排列(回溯入门)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 题目描述 难度:中等 给定一个不含重复数字的数组 nu ...
- 弹性数据库连接池探活策略调研(二)——Druid
前言 在上一篇文章中,我们介绍了弹性数据库连接失效的背景,并探讨了HikariCP连接池探活策略的相关内容.在本文中,我们将会继续探讨另一个线上常用的连接池--Druid,并为您介绍如何在使用Drui ...
- JAVA-Springboot实践项目-用户注册
Smiling & Weeping ----我本没喜欢的人, 见你的次数多了, 也就有了. 1.创建数据表 1.1.选中数据表: use store 1.2.创建t_user表: 2创建用户实 ...
- Fabric 2.x 智能合约开发记录
表象:Return schema invalid. required items must be unique [recovered] 虽然 Fabric v2.2 已经发布了很久了,但之前因为项目历 ...
- Qt信号槽与事件循环学习笔记
事件与事件循环 信号槽机制 事件与事件循环 在Qt中,事件(event)被封装为QEvent类/子类对象,用来表示应用内部或外部发生的各种事情.事件可以被任何QObject子类的对象接收并处理. 根据 ...