我正在使用websockets开发Spring应用程序。最近,我遇到了一项在我的应用程序中支持多个端点的任务。
我注册了端点,说:
@MessageMapping("route")
而且我希望两个端点都应具有子路由相同但实现不同的方法。
当我有单个websocket终结点时,我只需将方法添加以@RequestMapping("/api/v1")
注释的方法到我的rest控制器。现在,我尝试创建2个专门用于websocket方法的新控制器,我创建了2个Java类,并分别将其注释为@RequestMapping("/api/v2")
和@MessageMapping("route")
public void foo() {
log.debug("foo %version% called"); // v1 or v2
}
,并在其中的每个内部创建方法
MessageHeaders
但是在这种情况下,Spring由于模棱两可的映射而无法运行应用程序,并在启动时引发异常。
我也尝试访问方法内部的完整路由,但是找不到解决方法(我尝试查看ApplicationListener
)。
在我的应用中,我还实现了WebSocketListener implements ApplicationListener<AbstractSubProtocolEvent>
:
ngOnChanges
可以捕获踩踏事件并断开连接,但是这里也没有有关该路由的完整信息。
那么,我如何实现这种行为:不同的子路由使用不同的方法,但脚踩映射相同?