🎉 Socket.D v2.3 发布(打通前端与后端)
基于事件和语义消息流的网络应用层协议。 有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。 主要特性 基于事件,每个消息都可事件路由 所谓语义,通过元信息进行语义描述 流关联性,来回相关的消息会串成一个流 语言无关,使用二进制输传数据(支持 tcp, ws, udp)。支持多语言、多平台 断线重连,自动连接恢复 多路复用,一个连接便可允许多个请求和响应消息同时运行 双向通讯,单链接双向互听互发 自动分片,数据超出 16Mb(大小可配置),会自动分片、自动重组(udp 除外) 接口简单,是响应式但用回调接口 Java 适配更新(兼容 server 与 android): 新增 SendStream,RequestStream,SubscribeStream 三个流接口。强化流接口体验 添加 基于流接口,实现数据上传与下载的进度通知机制 添加 基于流接口,实现异常通知机制 调整 send 接口体验,基于流接口改造 smartsocket 升为 1.5.41 接口变化 描述 旧:session.send(event, entity) 新:session.send(event, entity) -> SendStream 发送 旧:session.sendAndRequest(event, entity, timeout?, callback) 新:session.sendAndRequest(event, entity, timeout?) -> RequestStream 发送并请求(要求1个答复) 旧:session.sendAndSubscribe(event, entity, timeout?, callback) 新:session.sendAndSubscribe(event, entity, timeout?) -> SubscribeStream 发送并订阅(可接收多个答复) Javascript 适配更新(兼容 h5, uniapp, node.js): 新增 SendStream,RequestStream,SubscribeStream 三个流接口。强化流接口体验 添加 基于流接口,实现数据上传与下载的进度通知机制 添加 基于流接口,实现异常通知机制 调整 send 接口体验,基于流接口改造 //发送 session.send("/demo/hello", SocketD.newEntity("hi")); //发送,且获取发送进度(如果有大数据发送,又需要显示进度) session.send("/demo/upload", SocketD.newEntity(file)).thenProgress((isSend, val, max)=>{ if(isSend){ //获取发送进度 } }); //发送并请求,且同步等待 let reply = session.sendAndRequest("/demo/hello", SocketD.newEntity()).await(); //发送并请求,且取接收进度(如果有大数据获取,又需要显示进度) session.sendAndRequest("/demo/download", SocketD.newEntity()).thenProgress((isSend, val, max)=>{ if(!isSend){ //获取接收进度 } }).thenReply(reply=>{ //异步获取答复 }).thenError(err=>{ //如果有出错? }); //发送并订阅 let entity = SocketD.newEntity().metaPut("videoId","1").meatPut("start","5").meatPut("size","5"); session.sendAndSubscribe("/demo/stream", entity).thenReply(reply=>{ //异步获取答复(会多次回调) }) 视频效果: for H5 https://www.bilibili.com/video/BV1ck4y197BV/ for UniAPP https://www.bilibili.com/video/BV1T94y1T7sp/ 代码仓库: https://gitee.com/noear/socketd https://github.com/noear/socketd 官网: https://socketd.noear.org