本文介绍了websocket的简单应用案例,不是点对点案例而是在任何地方都可以使用,废话不多说直接上代码:
1.websocket配置信息:
//配置registry
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig2 implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
// ⽤户可以订阅来⾃以"/topic"为前缀的消息,客户端只可以订阅这个前缀的主题
config.enableSimpleBroker("/topic");
// 客户端发送过来的消息,需要以"/app"为前缀,再经过Broker转发给响应的Controller
// config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
//路径"/ws"被注册为STOMP端点,对外暴露,客户端通过该路径接⼊WebSocket服务
registry.addEndpoint("/ws")
.setAllowedOrigins("*")
.withSockJS();
}
}
2.代码实现调用:
import org.springframework.messaging.simp.SimpMessagingTemplate;
@Autowired
/**
*Spring的SimpMessagingTemplate能够在应⽤的任何地⽅发送消息,
*甚⾄不必以⾸先接收⼀条消息作为前提。
*使⽤SimpMessagingTemplate的最简单⽅式是将它
*(或者其接⼝SimpMessageSendingOperations)⾃动装配到所需的对象中。
*SimpMessagingTemplate可以为指定的⽤户发送消息。
*SimpMessagingTemplate还提供了convertAndSendToUser()⽅法。convertAndSendToUser()⽅法能够让我们给特定⽤户发送消息。
*simpMessageSendingOperations.convertAndSendToUser("1", "/message", "测试convertAndSendToUser"
*/
private SimpMessagingTemplate simpMessagingTemplate;
/**
* 前端websocket 订阅路径 全路径 /topic/signal
*解决SimpMessagingTemplate循环依赖问题:
* 在 Controller 层去注⼊ SimpMessagingTemplate,
*然后将其作为参数传给 Service层的 SocketService ⾥的⽅法去调⽤。
*/
@MessageMapping("/mileage")
public void mileage() {
}
simpMessagingTemplate.convertAndSend("/topic/mileage", msg);
本文提供了一个WebSocket的简单应用示例,展示了如何配置WebSocket消息代理并实现消息的发送。通过@Configuration和@EnableWebSocketMessageBroker注解配置消息代理,允许用户订阅以'/topic'为前缀的主题。在代码实现部分,利用SimpMessagingTemplate发送消息到'/topic/mileage',实现了在应用任何地方发送消息的功能。
2万+





