一个Java小白的学习之路 个人博客 youngljx.top
SpringBoot自动化配置后使用WebSocket很方便,通过@MessageMapping 注解配置消息接口,通过@SendTo或者SimpMessageingTemplate进行消息转发,通过简单的配置就能实现点对点,点对面的消息发送。
消息群发
1.添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!--添加websocket 的前端库依赖-->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>sockjs-client</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>stomp-websocket</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
2.配置WebSocket
/**
* @description: 消息代理配置,Spring提供了基于WebSocket的STOMP支持,STOMP是一个简单的可互操作的协议,通常用于通过中间服务器在客户端之间进行异步消息传递
*/
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
//设置消息代理的前缀
registry.enableSimpleBroker("/topic");
//配置一个或多个前缀,过滤出需要被注解方法处理的消息
registry.setApplicationDestinationPrefixes("/app");
}
/**
* @Description: 注册Stomp端点 ,定义一个前缀为 /chat 的 端点,并开启sockjs支持
* @Param: [registry]
* @return: void
* @Date: 2020/5/3-16:33
*/
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat").withSockJS();
}
}
3.定义Controller
@Controller
public class GreetingController {
/**
* @Description: @MessageMapping("/hello")注解的方法用来接收/app/hello路径发来的消息,
* 在注解方法对消息进行处理后,再将消息转发到@SendTo定义的路径上,而@SendTo路径是一个前缀为
* /topic的路径,因此该消息会被交给消息代理broker,再由broker进行广播
* @Param: [msg]
* @return: com.ljx.websocket.bean.Message
* @Date: 2020/5/4-17:16
*/
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Message greeting(Message msg){
return msg;
}
}
4.创建聊天页面:
<!DOCTYPE html>
<html lang=