Solon v3.0.3

Socket.D 多频道监听 (v2)

</> markdown

Socket.D 是基于 url 连接的(这个跟 websocket 有点像),频道即指连接时的 path。监听多频道,就是给不同的 path 安排不同的监听处理。比如:

  • 我们有个用户频道("/")
  • 还有,管理员频道("/admin/")

在 Solon 的集成环境里,我们可以使用 "ServerEndpoint" 注解方便实现多频道监听:

@ServerEndpoint("/")
public class WebSocketDemo extends SimpleListener {
    @Override
    public void onMessage(Session session, Message message) throws IOException {
        session.send("我收到了:" + message.dataAsString());
    }
}

@ServerEndpoint("/admin/")
public class WebSocketDemo extends SimpleListener {
    @Override
    public void onMessage(Session session, Message message) throws IOException {
        session.send("你是管理员哦:" + message.dataAsString());
    }
}

然后,我们把("/mvc/")频道,转成 mvc 接口:

@ServerEndpoint("/mvc/")
public class WebSocketAsMvc extends ToHandlerListener {
}

//可以 Mvc 开发了
@Controller
public class HelloController {
    @Socket //不加限定注解的话,可同时支持 http 请求
    @Mapping("/demo/hello") 
    public Result hello(long id, String name) { //{code:200,...}
        return Result.succeed();
    }
}