Socket.D v2.3.7 发布
Socket.D
是基于"事件"和"语义消息""流"的网络应用层协议。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。协议特点可参考《官网介绍》。
pyton 已开发完成,再在测试中;go, rust, c++ 正在开发中。
for java / for js 更新说明:
- 添加 Client::openOrThow() 方法,原 open() 不再出异常
- 添加 Session::liveTime 接口
- 添加 Entity.of 快捷方法
- 添加 连接协议对 meta 传递的支持
- 添加 Handshake:path 方法
- 添加 CodecReader::peekByte 方法,标准化字符串解码
- 调整 发送时允许实体为 null(总有不需要传的时候)
- 调整 ClientChannel 内部处理,支持首次连接失败后仍可用
- 简化 ClientBase::open() 处理
- 优化 Codec::decodeString 处理方式
新增的接口体验:
- 两种打开方式
//如果不能连接正常返回(由心跳尝试不断连接)//用 java 示例 let session = SocketD.createClient("sd:tcp://127.0.0.1:8602/?u=a&p=2") .open(); //如果不能连接则异常 // 用 js 示例 const session = await SocketD.createClient("sd:ws://127.0.0.1:8602/?u=a&p=2")
.openOrThow();
- 支持用 null 发空实体
//等待模式 let reply = session.sendAndRequest("/user/get", null).await(); //回调模式 session.sendAndRequest("/user/get", null).thenReply(reply->{ });
- 支持活动时间获取
console.info(session.liveTime());
Socket.D.js 能力演示:
- 监听(相当于 ws 的增强)
多了事件路由。可以用一个连接,监听不同的业务事件(类似于 http path)。
//打开客户端会话(用 url 形式打开) let session = await SocketD.createClient("sd:ws://127.0.0.1:8602/?token=1b0VsGusEkddgr3d")
.listen(SocketD.newEventListener() .doOnOpen(s -> { //会话打开时 //... }).doOnMessage((s, m) -> { //收到任意消息时 //打印 console.info(m); }).doOn("/demo", (s, m) -> { //收到"/demo"事件的消息时 if (m.isRequest() || m.isSubscribe()) { //答复 s.replyEnd(m, SocketD.newEntity("And you too.")); } })) .open();
- 发送 和 发送文件(并获取进度)
发送相对于 ws 多了元信息。可为数据添加额外的业务标注。发送大数据时,会自动分片(接收端自动聚合)
//发送 session.send("/demo/hello", SocketD.newEntity("hi").metaPut("sender","noear")); //发送文件,且获取发送进度(如果有大数据发送,又需要显示进度)//实际开发,要用 sendAndRequest 接口(以获取接收确认) session.send("/demo/upload", SocketD.newEntity(file)).thenProgress((isSend, val, max)=>{ if(isSend){ //获取发送进度 console.info(`...${val}/${max}`); } });
- 请求 和 下载文件(或大数据块)
这个相当于 ws 有了 ajax 的交互方式
//发送并请求(有点像 ajax) let reply = session.sendAndRequest("/demo/hello", SocketD.newEntity()).thenReply(reply=>{ console.info(reply.dataAsString()); }); //发送并请求,且取接收进度(如果有大数据获取,又需要显示进度) session.sendAndRequest("/demo/download", SocketD.newEntity()).thenProgress((isSend, val, max)=>{ if(!isSend){ //获取接收进度 console.info(`...${val}/${max}`); } }).thenReply(reply=>{ //reply.data()... }).thenError(err=>{ //如果有出错? });
- 订阅 与 流量控制(一般用于流加载)
通过 range(start, size) 指定数据范围,由 sendAndSubscribe 发起订阅,通过 thenReply 多次接收。
//发送并订阅 let entity = SocketD.newEntity().range(5,5).metaPut("videoId","1"); session.sendAndSubscribe("/demo/stream", entity).thenReply(reply=>{ //异步获取答复(会多次回调) })
视频演示效果:
- for H5
- for UniAPP
代码仓库:
官网:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
BeetlSQL 3.28.1 发布,流行的 Java DAO 工具
BeetlSQL 研发自 2015 年,核心和扩展全部自研。目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,入门快。 阅读文档源码和例子在线体验多库使用性能测试插件支持 本次调整: sqlparser 升级到4.7,并修复兼容问题 sql-dynamic-table bug修复,使用asm直接生成entity类 query的逻辑删除功能修复,当执行update或者updateselective 报错 BeetlSQL 核心功能 BeetlSQL 核心 功能 sql-core 核心包,封装了JDBC操作,SQL文件管理,可扩展注解管理 sql-fetch 类似Hibernate那样提供@Fetch,@FetchMany等注解 sql-mapper mapper类定义和扩展,用户可以自定义自己的mapper和mapper的注解 sql-intergration 整合Spring,solon,jfinal等框架,以及例子 sql-query Query和LambdaQuery,用Java API构造和使用SQL sql-mapping 支持单表,多表与POJO的...
- 下一篇
去中心化分布式即时通讯引擎 tim v2.0.1 发布
Tim即时通讯引擎 的去中心化分布式架构具有去中心化、分布式数据存储、支持大规模用户、即时通讯、安全性和隐私保护、高可用性和容错性以及可扩展性和灵活性等特点。能够有效地解决大规模分布式系统的设计和实现问题,并提高系统的性能、可用性和扩展性。 tim v2.0.1版本的更新内容 修复了已知bug 增加了大字符串协议Big String 增加了大字节流协议Big Binary 说明:big string,big binary 是一种无格式的松散数据协议,主要应用场景在一些特殊的场景下,对类似thrift,json等特定格式的协议无法支持的情况下使用。这种两种松散的协议,可以支持一个数据包被终端分包多次发送的情况。 tim实现的开源实践项目webtim webtim在线访问地址:https://tim.tlnet.top webtim项目本地部署:https://github.com/donnie4w/webtim-deploy 说明:作者已经为windows,linux, macos等操作系统, 写好启动脚本,并打包放置相应的webtim执行文件。只需要执行start脚本,便可以在本地一键...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7设置SWAP分区,小内存服务器的救世主