Sokcet.D 是基于事件和语义消息流的网络应用协议。

有用户说，“Socket.D 之于 Socket，尤如 Vue 之于 Js、Mvc 之于 Http”

### 主要特性

* 基于事件，每个消息都可事件路由
* 所谓语义，通过元信息进行语义描述
* 流关联性，来回相关的消息会串成一个流
* 语言无关，使用二进制输传数据（支持 tcp, ws, udp）。支持多语言、多平台
* 断线重连，自动连接恢复
* 多路复用，一个连接便可允许多个请求和响应消息同时运行
* 双向通讯，单链接双向互听互发
* 自动分片，数据超出 16Mb，会自动分片、自动重组（udp 除外）
* 接口简单，是响应式但用回调接口


### 与其它协议的简单对比

| 对比项目        | socket.d    | http | websocket | rsocket      | socket.io | 
|-------------|-------------|------|-----------|--------------|-----------|
| 发消息（Qos0）   | 有           | 无    | 有         | 有            | 有         | 
| 发送并请求（Qos1） | 有           | 有    | 无         | 有            | 无         | 
| 发送并订阅       | 有           | 无    | 无         | 有            | 无         | 
| 答复或响应       | 有           | 有    | 无         | 有            | 无         |   
| 单连接双向通讯     | 有           | 无    | 有(不便)     | 有            | 有(不便)     | 
| 数据分片        | 有           | /    | 无         | 有            | 有         | 
| 断线自动重连      | 有           | /    | 无         | 有            | 有         |   
| 有元信息        | 有           | 有    | 无         | 有            | 无         |     
| 有事件（或路径）    | 有           | 有    | 无         | 无            | 有         |    
| 有流（或消息关联性）  | 有           | 无    | 无         | 有            | 无         | 
| Broker 模式集群 | 有           | 无    | 无         | 有            | 无         |      
| 异步          | 异步            | 同步   | 异步        | 异步           | 异步        |       
| 接口体验        | 经典          | 经典   | 经典        | 响应式(复杂)      | 经典        |       
| 基础传输协议      | tcp, udp, ws | tcp  | http      | tcp, udp, ws | ws        |      




### 简单的协议说明（详见：官网）


* 连接地址风格

```
sd:tcp://19.10.2.3:9812/path?u=noear&t=1234
sd:udp://19.10.2.3:9812/path?u=noear&t=1234
sd:ws://19.10.2.3:1023/path?u=noear&t=1234
```


* 帧码结构

```
//udp only <2k
[len:int][flag:int][sid:str(<64)][\n][event:str(<512)][\n][metaString:str(<4k)][\n][data:byte(<16m)]
```
