Listener 的增强应用
内置监听器 | ||
---|---|---|
SimpleListener | 简单监听器 | Listener 的空实现 |
PipelineListener | 管道监听器 | Listener 的链式组织实现 |
EventListener | 事件监听器,根据消息事件路由(message::event) | 相当于消息的路由器 |
1、SimpleListener(简单监听器)
就是一个空实现,上面已经有大量的使用示例。下面的都是链式写法,有些小伙伴可能不喜欢。
2、 EventListener(事件监听器,根据消息事件路由)
它相当于是事件(event)的路由器。可以直接在上面配置事件监听,也可以通过它做分发处理。
const session = await SocketD.createClient("sd:ws://127.0.0.1:8602/?token=1b0VsGusEkddgr3d")
.listen(SocketD.newEventListener().doOnMessage((s,m) => {
//所有消息会先经过 doOnMessage
console.info(m);
s.send("/demo", new StringEntity("Me too!"));
}).doOn("/order", (s,m) => {
//根据消息事件路由
console.info(m); //在 onMessage 时已打印一次,这算第二次打印
}).doOn("/user", (s,m) => {
//根据消息事件路由
console.info(m); //在 onMessage 时已打印一次,这算第二次打印
}))
.open();
3、 PipelineListener(管道监听器)
在前端,一般用不到它
const session = await SocketD.createClient("sd:ws://127.0.0.1:8602/?token=1b0VsGusEkddgr3d")
.listen(SocketD.newPipelineListener().next(SocketD.newEventListener().doOnMessage((s, m) => {
//这里可以做拦截
console.info("拦截打印::" + m);
})).next(new EventListener().doOnMessage((s, m) => {
//这里可以做业务处理
console.info(m);
})))
.open();