基于事件和语义消息流的网络应用协议。
支持 tcp, udp, ws, kcp 传输。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。
[len:int][flag:int][sid:str(<64)][\n][event:str(<512)][\n][metaString:str(<4k)][\n][data:byte(<16m)]
Client
Server
//打开客户端会话(用 url 形式打开)
let session = SocketD.createClient("sd:tcp://127.0.0.1:8602/?token=1b0VsGusEkddgr3d")
.open();
let entity = new StringEntity("Hello wrold!").metaPut("user","noear");
//发送
session.send("/demo", entity);
//发送并请求(且,等待一个答复)
let reply = session.sendAndRequest("/demo", entity).await();
println(reply);
//发送并订阅(且,接收零个或多个答复流)
session.sendAndSubscribe("/demo", entity).thenReply(reply->{
//打印
println(reply);
});
//启动服务端
SocketD.createServer("sd:tcp")
.config(c -> c.port(8602))
.listen(new EventListener()
.doOnOpen(s -> { //会话打开时
//鉴权
if ("1b0VsGusEkddgr3d".equals(s.param("token")) == false) {
s.close();
}
}).doOnMessage((s, m) -> { //收到任意消息时
//打印
System.out.println(m);
}).doOn("/demo", (s, m) -> { //收到"/demo"事件的消息时
if (m.isRequest() || m.isSubscribe()) {
//答复
s.replyEnd(m, new StringEntity("And you too."));
}
}))
.start();
语言或平台的实现与规划
我们的赞助商
暂无...