基于事件和语义消息流的网络应用层协议。
有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。
接口变化 | 描述 |
---|---|
旧: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 | 发送并订阅(可接收多个答复) |
//发送
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=>{
//异步获取答复(会多次回调)
})
视频效果: