我是 Grails 新手,致力于让 WebSocket 在应用程序中工作。我已经完成了大部分工作,只是我不知道如何将参数传递给用 @MessageMapping 注释的方法。
这有效:
class MyController{
@MessageMapping(value="/start")
protected void startProcess(){ }
}
我需要这样的东西才能工作:
@MessageMapping(value="/start/{file}")
protected void startProcess(){
String file = params.file
//do somethig with the file...
}
但是这不起作用。我尝试更改 UrlMappings.groovy、@PathVariable。我很确定我错过了一些简单的事情。有什么指点吗?
最佳答案
要从路径中获取某些内容,请使用@DestinationVariable
(请参阅 spring websocket 文档中的20.4.4 注释消息处理)。
这是一个工作片段(grails 2.4.3,基于插件示例):
// Domain Class
class Foo {
String name
String desc
}
// controller method
@MessageMapping("/hello/{file}")
@SendTo("/topic/hello")
protected String hello(@DestinationVariable String file, @Payload Foo foo) {
return "received: ${file} ${foo}"
}
// javascript
client.send("/app/hello/FILE", {}, JSON.stringify({
'name': "foo",
'desc': "a foo"
}));
关于grails - @MessageMapping 与 Grails spring-websocket 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085858/