spring - 如何区分 Spring Messaging 中的目标以进行套接字交换
问题描述
WebSocketMessageBrokerConfigurer的实现必须实现两个方法。configureMessageBroker就是其中之一:
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app")...};
在这个例子中,我们配置了所有带有“/app”前缀的消息将被路由到控制器类中的@MessageMapping-annotated 方法。
但是setApplicationDestinationPrefixes接受可变长度的字符串数组。如果我们有多个前缀,如何在控制器中将所有使用@MessageMapping 注释的特定方法分配给特定前缀?
解决方案
最初我认为答案是不仅在方法上而且在控制器类上使用@MessageMapping,并将控制器级注释映射到前缀,而方法级注释映射到路由的下部。
我在https://docs.spring.io/spring-framework/docs/4.3.x/spring-framework-reference/html/websocket.html找到了一个例子,它给了我这个想法:
@Controller
@MessageMapping("foo")
public class FooController {
@MessageMapping("bar.{baz}")
public void handleBaz(@DestinationVariable String baz) {
}
}
但后来我注意到这种组合解决了路线“/app/foo.bar.{baz}”。{baz} 是这里的占位符
推荐阅读
- c++ - 使用 int 而不是 const int 声明 0 的 int 数组
- python - 带有 PyInstaller 的独立文件
- c# - 修改 ActionFilterAttribute、OnActionExecuted 内部 web api 动作返回的结果
- pipe - 如何通过 QEMU 上的管道连接两个虚拟机?
- python - 创建列表(随后将列表分配给数据框)和在迭代时使用 loc 更新数据框有什么区别?
- gcc - 应该使用哪些编译器标志在 Arm 架构上获得 IEEE 754 兼容的浮点数?
- sql-server - MSSQL查询FREETEXTTABLE过滤
- sql - SQL(HFSQL):如果 WHERE 子句,INNER JOIN 在性能上不是对称的?
- javascript - JS 使用 Array.map() 和 Array.reduce() 简化数组到对象转换的重构
- matplotlib - 使用 qt creator 和 QGraphicsView 在 PyQt 中嵌入 Matplotlib 图