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 接口体验,基于流接口改造
javascript 复制代码
//发送
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=>{
      //异步获取答复(会多次回调)
})

视频效果:

代码仓库:

官网:

相关推荐
摇滚侠几秒前
Maven 入门+高深 单一架构案例 54-59
java·架构·maven·intellij-idea
Electrolux5 分钟前
[onlyoffice-v9]纯前端怎么实现编辑预览office
前端·javascript·github
VidDown14 分钟前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
码云之上16 分钟前
聊聊如何设计一个高效、稳定的 Node.js 接入层
前端·后端·node.js
折哥的程序人生 · 物流技术专研26 分钟前
Java 23 种设计模式:从踩坑到精通 | 原型模式 —— 克隆对象,深拷贝与浅拷贝的坑你踩过吗?
java·设计模式·架构·原型模式·单一职责原则
装不满的克莱因瓶38 分钟前
基于 OpenResty 扩展开发实现动态服务注册与发现能力
java·开发语言·架构·openresty
程序员小羊!1 小时前
06Java 异常机制与常用类
java
kyriewen1 小时前
我读了一遍 Babel 编译后的 async/await,终于搞懂了它的原理(附 20 行手写实现)
前端·javascript·面试
weixin_523185321 小时前
Java基础知识总结(四):引用数据类型与参数传递机制
java·开发语言·python
IT_陈寒1 小时前
Vite项目build后路由404了?你可能漏了这个小配置
前端·人工智能·后端