Socket.D v2.5.12

Listener 的增强应用

</> markdown
内置监听器
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();