簡體   English   中英

Spring 4 STOMP Websockets-如何實現多渠道

[英]Spring 4 STOMP Websockets - How to realise Multichannel

與最新的Spring 4教程(包含STOMP和SockJS)一樣,我們發現以下類型的RequestMapping:

Homecontroller.java

@MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(HelloMessage message) throws Exception {
        Thread.sleep(3000); // simulated delay
        return new Greeting("Hello, " + message.getName() + "!");
    }

現在,我嘗試通過修改此requestmapping實現多渠道支持:

@MessageMapping("/hello/{id}")
    @SendTo("/topic/greetings/{id}")
    public Greeting greetingMultichannel(HelloMessage message) throws Exception {
        this.info();
        Thread.sleep(300); // simulated delay
        return new Greeting(" Hello, " + message.getName() + "!");
    }

MessageMapping不起作用,sendTo不會傳遞回分隔的URL。 盡管我確實訂閱了正確的頻道,但消息沒有問題地發出,如本例所示


調試日志:

正在打開Web套接字... stomp.js:130正在打開Web套接字... stomp.js:130

CONNECT accept-version:1.1,1.0心跳:10000,10000

stomp.js:130 <<<已連接心跳:0,0版本:1.1

stomp.js:130已連接到服務器未定義stomp.js:130已連接:CONNECTED版本:1.1心跳:0,0

(指數):23

SUBSCRIBE ID:Sub-0目的地:/ topic / greetings / 1

stomp.js:130

發送目的地:/ app / hello / 1內容長度:18

{ “名”: “textext”}


應該有一個回應,但是什么也沒有回來。

有人可以看到我在這里想念的嗎?

干杯,海因里希

目前還沒有辦法將參數傳遞給@SendTo / @SendToUser ,上占位符@MessageMapping沒有可用@SendTo / @SendToUser 為此有一個開放的Jira ,請留意。

同時,使用SimpMessagingTemplate

@Autowired 
private SimpMessagingTemplate simpMessagingTemplate;

@MessageMapping("/hello/{id}")
public void greetingMultichannel(HelloMessage message, @DestinationVariable("id") Long id) throws Exception {
    this.info();
    Thread.sleep(300); // simulated delay

    simpMessagingTemplate.convertAndSend("/topic/greetings/" + id, new Greeting(" Hello, " + message.getName() + "!"));
}

2015年9月8日更新:

從Spring 4.2開始,可以在@SendTo / @SendToUser使用目標變量占位符。 現在可以這樣:

@MessageMapping("/hello/{id}")
@SendTo("/topic/greetings/{id}")
public Greeting greetingMultichannel(HelloMessage message) throws Exception {
    this.info();
    Thread.sleep(300); // simulated delay
    return new Greeting(" Hello, " + message.getName() + "!");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM