SpringBoot的WebSocket实现单聊群聊
本文实例为大家分享了SpringBoot的WebSocket实现单聊群聊,供大家参考,具体内容如下
说在开头
在HTTP协议中,所有的请求都是由客户端发送给服务端,然后服务端发送请求
要实现服务器向客户端推送消息有几种methods:
1、轮询
大量无效请求,浪费资源
2、长轮询
有新数据再推送,但这会导致连接超时,有一定隐患
3、Applet和Flash
过时,安全隐患,兼容性不好
消息群发
创建新项目:
添加依赖:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-websocket org.webjars sockjs-client 1.1.2 org.webjars jquery 3.3.1 org.webjars stomp-websocket 2.3.3 org.webjars webjars-locator-core 
创建WebSocket配置类:WebSocketConfig
@Configuration
@EnableWebSocketMessageBroker//注解开启webSocket消息代理
publicclassWebSocketConfigimplementsWebSocketMessageBrokerConfigurer{
/**
*配置webSocket代理类
*@paramregistry
*/
@Override
publicvoidconfigureMessageBroker(MessageBrokerRegistryregistry){
registry.enableSimpleBroker("/topic");//代理消息的前缀
registry.setApplicationDestinationPrefixes("/app");//处理消息的方法前缀
}
@Override
publicvoidregisterStompEndpoints(StompEndpointRegistryregistry){
registry.addEndpoint("/chat").withSockJS();//定义一个/chat前缀的endpioint,用来连接
}
}
创建Bean
/**
*群消息类
*/
publicclassMessage{
privateStringname;
privateStringcontent;
//省略getter&setter
}
定义controller的方法:
/**
*MessageMapping接受前端发来的信息
*SendTo发送给信息WebSocket消息代理,进行广播
*@parammessage页面发来的json数据封装成自定义Bean
*@return返回的数据交给WebSocket进行广播
*@throwsException
*/
@MessageMapping("/hello")
@SendTo("/topic/greetings")
publicMessagegreeting(Messagemessage)throwsException{
returnmessage;
}
Title 用户名 连接 断开连接 发送 群聊进行中 
