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 用户名 连接 断开连接 发送 群聊进行中