Вопрос

Я становлюсь новичками, и работая над завоеванием Websockets, работающих в приложении.Я получил большую часть этого, за исключением того, что я не мог выяснить, как пройти параметры методам, аннотированными с @messageMappe.

Это работает:

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 (см. 20.4.4 Аннотация Обработка сообщения в Весенняя Websocket Документация).

Вот рабочий фрагмент (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"
}));
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top