socket.d.js v2.3.4 支持"微信"、"uniapp"


Socket.D

是基于"事件"和"语义消息""流"的网络应用层协议。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。协议特点可参考《官网介绍》。

Socket.D.js 兼容更新说明

是近期发布的 socket.d 协议 js client 实现。经过社区的努力,现已:

  • 兼容 h5(浏览器)
  • 兼容 uniapp(浏览器、android, ios)
  • 兼容 微信小程序(wx 接口)//新增
  • 兼容 node.js

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
    • 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

相關推薦

2024-01-31

Socket.D 是基于"事件"和"语义消息""流"的网络应用层传输协议。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。协议特点可参考《官网介绍》。 pyton 已开发完成,再在测试中;go, rust, c

2024-01-23

Socket.D 是基于"事件"和"语义消息""流"的网络应用层协议。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。协议特点可参考《官网介绍》。 pyton 已开发完成,再在测试中;go, rust, c++ 正

2023-07-02

。 本次更新新增虚拟商品,服务类型商品,虚拟商品,支持线下到店二维码核销,无需发货,修复优化了 webIM 客服系统等多项。 移动端预览: 平台后台预览 新增部分功能如下: 1. 产品发布新增商品类型选择(实物商品

2024-01-09

个轻量级、语义化、对开发者友好的 Golang 时间处理库,支持链式调用、农历和 gorm、xorm 等主流 orm。 目前已被 awesome-go-cn 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 更新日

2023-06-17

。 秒杀、拼团、社区团购、积分系统等功能模块,对接微信、支付宝等各端支付登陆接口。本次更新新增虚拟商品(线下到店二维码核销,无需发货)、新增虚拟商品等功能,修复优化了webIM客服系统等多项。 移动端预览:

2023-06-03

加关注店铺后可以取消关注操作 新增PC端搜索店铺页,支持排序和关键词筛选店铺列表 修改品牌表(brand)字段名称 修改小程序支付授权CODE字段传参由 wxcode 改为 code 修改订单状态值(移除订单状态:订单已提交-货到付款

2023-11-02

ShopWind 多商户商城系统 v4.5 发布更新,PHP+MySQL,服务端 Yii2 框架,移动端 uniapp。使用 vue3/vite、Element Plus UI、 axios 数据请求、页面异步加载。 秒杀、拼团、社区团购、积分系统等功能模块,对接微信、支付宝等各端支付登陆

2023-06-29

GouOS 负责帮您在微信、支付宝官方进行签约开户,同时也支持自己在微信签约后接入 YunGouOS 使用,资金由微信 / 支付宝官方结算,不经过任何第三方平台。主要集成微信官方扫码支付、JSAPI 支付、小程序支付、订单查询、退款

2023-08-13

。 秒杀、拼团、社区团购、积分系统等功能模块,对接微信、支付宝等各端支付登陆接口。本次更新新增虚拟商品(线下到店二维码核销,无需发货)、新增虚拟商品等功能,修复优化了 webIM 客服系统等多项。 移动端预览:

2023-10-09

otes)。MobileIMSDK 可能是市面上唯一同时支持 UDP+TCP+WebSocket 三种协议的同类开源IM框架。 二、MobileIMSDK简介 MobileIMSDK 是一套专为移动端开发的原创IM通信层框架: 历经10年、久经考验; 超轻量级、高度提炼,lib

2024-03-05

GouOS 负责帮您在微信、支付宝官方进行签约开户,同时也支持自己在微信签约后接入 YunGouOS 使用,资金由微信 / 支付宝官方结算,不经过任何第三方平台。主要集成微信官方扫码支付、JSAPI 支付、小程序支付、订单查询、退款

2023-04-02

单易用; 3)基于微信原生WebSocket API,简洁优雅; 4)支持运行于任何支持微信小程序的手机端; 5)能与 MobileIMSDK 的各种客户端完美互通; 6)可应用于微信小程序中的消息推送、客服聊天、企业OA、IM等场景。

2023-11-12

新内容如下: 新增订单发货表【order_express】,可以支持一个订单填写多条发货单号(预留) 新增服务端自提订单列表增加门店名称,筛选条件增加按门店筛选订单 新增服务端身份证信息校验插件 优化移动端分销门店申

2023-10-25

。 本次更新新增虚拟商品,服务类型商品,虚拟商品,支持线下到店二维码核销,无需发货,修复优化了 webIM 客服系统等多项。 移动端预览: 平台后台预览 部分功能说明: 1. 产品发布新增商品类型选择(实物商品、服