Dol*_*lan 10 spring stomp websocket spring-websocket
是否可以创建STOMP和Spring 4的房间?Socket.IO有内置的房间,所以我想知道Spring是否有这个
我的代码目前:
@MessageMapping("/room/greet/{room}")
@SendTo("/room/{room}")
public Greeting greet(@DestinationVariable String room, HelloMessage message) throws Exception {
return new Greeting("Hello, " + room + "!");
}
Run Code Online (Sandbox Code Playgroud)
@SendTo("/ room/{room}")是理想的选择
但是,我受限于:
@SendTo("/room/room1")
@SendTo("/room/room2")
@SendTo("/room/room3")
Run Code Online (Sandbox Code Playgroud)
等......这非常非常不合理
客户是:
stompClient.subscribe('/room/' + roomID, function(greeting){
showGreeting(JSON.parse(greeting.body).content);
});
Run Code Online (Sandbox Code Playgroud)
roomID可以是room1,room2或room3 ...如果我想要更多房间怎么办?现在感觉就像这样的痛苦
Bri*_*zel 24
看起来这个"房间"功能实际上是一个发布/订阅机制,这是通过Spring Websocket支持中的主题实现的(有关此内容的更多信息,请参阅STOMP协议支持和目标).
有了这个例子:
@Controller
public class GreetingController {
@MessageMapping("/room/greeting/{room}")
public Greeting greet(@DestinationVariable String room, HelloMessage message) throws Exception {
return new Greeting("Hello, " + message.getName() + "!");
}
}
Run Code Online (Sandbox Code Playgroud)
如果消息被发送到"/ room/greeting/room1",则返回值Greeting将自动发送到"/ topic/room/greeting/room1",因此初始目的地前缀为"/ topic".
如果您想自定义目的地,您可以@SendTo像使用一样使用,或使用如下的MessagingTemplate:
@Controller
public class GreetingController {
private SimpMessagingTemplate template;
@Autowired
public GreetingController(SimpMessagingTemplate template) {
this.template = template;
}
@MessageMapping("/room/greeting/{room}")
public Greeting greet(@DestinationVariable String room, HelloMessage message) throws Exception {
Greeting greeting = new Greeting("Hello, " + message.getName() + "!");
this.template.convertAndSend("/topic/room/"+room, greeting);
}
}
Run Code Online (Sandbox Code Playgroud)
我想快速查看参考文档和一些有用的示例,例如投资组合应用程序和聊天应用程序应该很有用.
| 归档时间: |
|
| 查看次数: |
9330 次 |
| 最近记录: |