SpringBoot + WebSocket
来源:互联网 发布:地球人软件试用版 编辑:程序博客网 时间:2024/05/18 02:40
SpringBoot + WebSocket
pom.xml导入插件
<!-- SpringWebSocket依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>1.4.1.RELEASE</version></dependency>
添加Config配置文件
package com.clsystem.Config;import org.springframework.context.annotation.Configuration;import org.springframework.messaging.simp.config.MessageBrokerRegistry;import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;import org.springframework.web.socket.config.annotation.StompEndpointRegistry;/** * Created by pudding on 2017-10-30.(YYR) */@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic","/user");//这句表示在topic和user这两个域上可以向客户端发消息; config.setApplicationDestinationPrefixes("/app");//这句表示客户端向服务端发送时的主题上面需要加"/app"作为前缀; config.setUserDestinationPrefix("/user");//这句表示给指定用户发送(一对一)的主题前缀是“/user/”; } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/cl-socket").setAllowedOrigins("*").withSockJS();//个和客户端创建连接时的url有关,后面在客户端的代码中可以看到。 }}
消息请求接口Controller
package com.clsystem.Controller;import com.alibaba.fastjson.JSONObject;import com.clsystem.Dto.BaseResult;import com.clsystem.Dto.Comment;import com.clsystem.Dto.Press;import com.clsystem.Service.IPress;import io.swagger.annotations.ApiOperation;import org.apache.ibatis.annotations.Param;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.messaging.handler.annotation.MessageMapping;import org.springframework.messaging.handler.annotation.SendTo;import org.springframework.messaging.simp.SimpMessagingTemplate;import org.springframework.messaging.simp.annotation.SendToUser;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;/** * Created by pudding on 2017-11-8.(新闻) */@RestControllerpublic class PressController { @Autowired private SimpMessagingTemplate messagingTemplate; @Autowired private IPress iPress; /** * 查询全部新闻 */ @MessageMapping("/press") @SendTo(value = "/topic/press")//广播式 public void findPress(@RequestParam("release_object") Integer release_object){ BaseResult baseResult=iPress.findAllPress(release_object); messagingTemplate.convertAndSend("/topic/press", JSONObject.toJSONString(baseResult)); } /** * 查询新闻详情 * @param press */ @MessageMapping("/pressInfo") @SendToUser(value = "/topic/pressInfo",broadcast = false)//私有式 public void findPressInfo(Press press){ BaseResult baseResult=iPress.findPressInfo(press.getId()); messagingTemplate.convertAndSendToUser(press.getId().toString(),"/topic/pressInfo", JSONObject.toJSONString(baseResult)); }}
JS 需导入sockjs.min.js 和stomp.min.js 库
<script src="https://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.min.js"></script> <script src="https://cdn.bootcss.com/stomp.js/2.3.3/stomp.min.js"></script> //请求连接 function connect(){ var socket = new SockJS('http://localhost:8096/cl-socket'); stompClient = Stomp.over(socket); stompClient.connect({}, function(frame) { }); stompClient.subscribe('/topic/press', function(data) { alert(data); var json=JSON.parse(data.body); }); stompClient.subscribe('/user/'+2+'/topic/pressInfo', function(data) { var json=JSON.parse(data.body); }); } //请求会话 function send(){ stompClient.send("/app/press", {}, JSON.stringify({ })); stompClient.send("/app/pressInfo", {}, JSON.stringify({ 'id':2 })); } //关闭连接 function disconnect(){ if (stompClient != null) { stompClient.disconnect();//断开连接 } }
浏览器兼容
- 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
- IE9以下不支持
- IE9,10,11存在以下问题
- 不支持离线功能
- IE9不支持文件导入导出
- IE10不支持拖拽文件导入
阅读全文
0 0
- springboot websocket
- SpringBoot-Websocket
- SpringBoot + WebSocket
- springBoot整合webSocket
- SpringBoot整合WebSocket案例
- SpringBoot之WebSocket练习
- SpringBoot中的WebSocket广播
- SpringBoot集成WebSocket
- SpringBoot 使用WebSocket
- SpringBoot 快速实现WebSocket
- springboot-websocket作为客户端
- SpringBoot 配置 WebSocket
- SpringBoot学习(四)SpringBoot和WebSocket
- SpringBoot入门(七)-初识WebSocket
- SpringBoot之WebSocket广播式
- SpringBoot 集成WebSocket广播模式
- springboot+websocket+sockjs进行消息推送
- 基于 SpringBoot 和 webSocket 的匿名聊天室
- 学习笔记
- NYOJ I. 鸡蛋队列
- C#读书笔记
- C++并发编程学习——2.管理线程
- 对输入数据的异常处理
- SpringBoot + WebSocket
- dubbo的Failed to save registry store file问题
- bashrc与profile的区别
- C语言学习笔记(九)---简单的RSA加密算法练习
- Android艺术探索笔记
- malloc.realloc.calloc函数的区别
- (POJ1062)昂贵的聘礼
- 火车票购票系统模拟
- 线程监控