grails - @MessageMapping 与 Grails spring-websocket 插件

标签 grails grails-2.0 grails-controller spring-websocket

我是 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/

相关文章:

sorting - grails 中的分页和排序

java - Grails/Maven 构建失败

grails - Grails邮件插件出现问题,连接被拒绝:connect

grails 2.0 <g :javascript> doesn't work

grails - 如何在Grails中使用withCriteria导致新的withCriteria查询?

grails - 无法登录Grails应用

Grails Assets 管道 - 没有可用的

Grails 针对正在运行的应用程序测试执行

Grails - 重定向如何工作?

ajax - 如何使用 Ext GWT (GXT) 在 Grails 上共享域对象?