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. ...
随机推荐
- 10、Spring之AOP概述
10.1.概念 AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程 AOP是面向对象编程(OOP)的一种补充和完善,OOP是纵向继承机制,A ...
- Python图片与Base64相互转换
import base64 #必须的 pic=open("img.png","rb")#读取本地文件 pic_base=base64.b64encode(pic ...
- 原来你是这样的JAVA[06]-反射
1.JVM为每个加载的class及interface创建了对应的Class实例来保存class及interface的所有信息: 获取一个class对应的Class实例后,就可以获取该class的所有信 ...
- HDU 1171 0-1背包
最近感觉DP已经完全忘了..各种爆炸,打算好好复习一发,0-1背包开始 Big Event in HDU Problem Description Nowadays, we all know that ...
- KRPano中文教程文档PDF版本下载
KRPano中文教程文档PDF版本下载 下载地址:https://pan.baidu.com/s/1qXIZ2os 感谢KRPano技术解密群小伙伴:斌仔分享 中文文档目录: 概述文件说明krpano ...
- window操作系统安装多个版本nodejs版本-控制工具nvm
参考: https://blog.csdn.net/m0_38134431/article/details/118388297 https://juejin.cn/post/7044890876631 ...
- 【.NET8】访问私有成员新姿势UnsafeAccessor(下)
前言 书接上回,我们讨论了在.NET8中新增的UnsafeAccessor,并且通过UnsafeAccessor访问了私有成员,这极大的方便了我们代码的编写,当然也聊到了它当前存在的一些局限性,那么它 ...
- math 库中常用的数学运算和常量【GO 基础】
〇.关于 math GO 语言的 math 库是一个内置的标准库,其中包含了许多数学函数和常量,用于计算各种数学运算和统计学计算. 日常开发中,计算当然是少不了的,那么今天来梳理下备查. 一.测试示例 ...
- Linux系列教程——Linux基本权限、Linux特殊权限、LinuxACL控制、Linux输入输出
@ 目录 1 Linux基本权限 1.权限基本概述 1.什么是权限? 2.为什么要有权限? 3.权限与用户之间的关系? 4.权限中的rwx分别代表什么含义? 2.权限设置示例 1.为什么要设定权限,我 ...
- 17.1 隐藏执行CMD命令
本章内容涉及使用Socket API和CMD命令行工具实现本地CMD命令执行.无管道正向CMD和无管道反向CMD三种功能.执行本地CMD实现使用CreateProcess函数创建一个新的CMD进程,并 ...