Socket.D

基于事件和语义消息流的传输协议。

有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。
[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();
语言或平台的实现与规划
我们的赞助商

暂无...


成为赞助商