[英]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.