Some users said, "Socket.D is to Socket, just like Vue is to Js and Mvc is to HTTP."
Main features
- Based on events, each message can be event routed
- The so-called semantics is semantic description through meta-information.
- Stream correlation, related messages going back and forth will be strung together into a stream
- Language-independent, using binary to transmit data (supports tcp, ws, udp). Supports multiple languages and platforms
- Disconnection and reconnection, automatic connection recovery
- Multiplexing, a single connection allows multiple request and response messages to run simultaneously
- Two-way communication, single link, two-way listening and sending
- Automatic fragmentation, if the data exceeds 16Mb (size configurable), it will be automatically fragmented and reorganized (except udp)
- The interface is simple and responsive but uses a callback interface
Simple comparison with other protocols
Compare items | socket.d | http | websocket | rsocket | socket.io |
---|---|---|---|---|---|
Send message (Qos0) | have | none | have | have | have |
Send and request (Qos1) | have | have | none | have | none |
Send and subscribe | have | none | none | have | none |
reply or response | have | have | none | have | none |
Single connection two-way communication | have | none | Yes (inconvenience) | have | Yes (inconvenience) |
Data sharding | have | / | none | have | have |
Automatic reconnection after disconnection | have | / | none | have | have |
meta information | have | have | none | have | none |
There is an event (or path) | have | have | none | none | have |
There is a flow (or message correlation) | have | none | none | have | none |
Broker mode cluster | have | none | none | have | none |
asynchronous | asynchronous | Synchronize | asynchronous | asynchronous | asynchronous |
Interface experience | classic | classic | classic | Responsive (complex) | classic |
basic transport protocol | tcp, udp, ws | tcp | http | tcp, udp, ws | ws |
This implementation framework update
- Adjust sharding processing to callback mode. Synchronize with js (more adaptable)
- Adjust BufferReader and rename it to CodecReader
- Adjust BufferWriter and rename it to CodecWriter
- Adjust some interface method names to facilitate cross-language migration and development!!!
- Adjust some method naming to facilitate cross-language development
- Adjust fixed Codec type definition (no need for generics)
- Adjustments prevent Codec from being modified externally (it is the kernel after all)
- Optimize connector thread release processing
- Optimize the closing processing of smartsocket adaptation
- Optimize thread number processing for netty adaptation
- Fix the problem of event loss when sharding
- Fixed the problem of ClusterClientSession::getSessionOne polling target error
- Reduce the number of threads adapted to aio and nio
- smartsocket upgraded to 1.5.40