监听与会话与实体
监听与会话,是 Socket.D 的体验面门,是开发者与之交互的核心接口。
- Listener 监听器(可双向互听)
接口 | 描述 | 备注 |
---|---|---|
listener::onOpen(session) | 当打开会话时 | 此时,服务端不能发消息;客户端可以发 |
listener::onMessage(session, message) | 当收到消息时 | |
listener::onClose(session) | 当关闭会话时 | |
listener::onError(session, error) | 当出错时 |
服务端 onOpen 时,握手未完成,不能给“当前会话”发消息。具体参考:《协议指令流详解》
- Session 会话关键接口(可双向互发)
接口 | 描述 |
---|---|
session::send(event, entity)->SendStream | 发送(Qos0) |
session::sendAndRequest(event, entity)->RequestStream | 发送并请求(且,只收一个答复。Qos1) //要求必须答复一次 |
session::sendAndRequest(event, entity, timeout)->RequestStream | 带超时 |
session::sendAndSubscribe(event, entity)->SubscribeStream | 发送并订阅(且,接收多个答复) //在答复结束之前,不限答复次数。 |
session::sendAndSubscribe(event, entity, timeout)->SubscribeStream | 带超时 |
session::reply(from, entity) | 答复 |
session::replyEnd(from, entity) | 答复结束 |
session::colse() | 关闭(“本端”不能再发消息,心跳中止) |
其中,需要对端答复的接口,有等待答复“超时”的概念(否则,没有超时概念)。
- Entity 三个内置实例
实体 | 说明 | 备注 |
---|---|---|
EntityDefault | 默认实体 | 一般用于传二进制数据 |
FileEntity | 文件实体(基于 EntityDefault 扩展) | 一般用于传输文件 |
StringEntity | 字符串实体(基于 EntityDefaul 扩展) | 很常用(比如你发个 json 消息) |
也可以基于 Entity 接口定制!