当前位置:   article > 正文

SpringBoot整合WebSocket实现消息推送(复制即用)_spring boot 整合 netty + websocket 实时消息推送

spring boot 整合 netty + websocket 实时消息推送

1.websocket介绍

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。

1.websocket2应用

(1)系统实时通告
(2)即时聊天
(3)弹幕
(4)实时数据更新:比如体育实况更新、股票基金报价实时更新
(5)代替轮询,提高效率。

本案例为有人下单之后先客户端推送消息

第一步引入依赖包

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-websocket</artifactId>
  4. </dependency>

第二步添加配置类

  1. @Component
  2. public class WebSocketConfig {
  3. @Bean
  4. public ServerEndpointExporter serverEndpointExporter() {
  5. return new ServerEndpointExporter();
  6. }
  7. }

第三步:编写连接代码

  1. @Component
  2. @ServerEndpoint("/webSocket")
  3. public class WebSocket {
  4. public Session session;
  5. //存储连接信息
  6. private static CopyOnWriteArraySet<WebSocket> webSockets = new CopyOnWriteArraySet<>();
  7. @OnOpen
  8. public void onOpen(Session session) {
  9. this.session = session;
  10. System.out.println("打开链接");
  11. webSockets.add(this);
  12. }
  13. @OnClose
  14. public void onClose() {
  15. System.out.println("关闭连接");
  16. webSockets.remove(this);
  17. }
  18. @OnMessage
  19. public void onMessage(String message) {
  20. System.out.println("收到客户端发来的消息" + message);
  21. }
  22. //向客户端发送消息的方法
  23. public void sendMessage(String message) {
  24. for (WebSocket webSocket : webSockets) {
  25. try {
  26. webSocket.session.getBasicRemote().sendText(message);
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. }
  32. }

第四步:编写下单接口

  1. //注入第三步的WebSocket类
  2. @Autowired
  3. private WebSocket webSocket;;
  4. @AppLog(value = "订单支付", type = 1)
  5. @AuthCheck
  6. @PostMapping("/order/pay")
  7. @ApiOperation(value = "订单支付", notes = "订单支付")
  8. public ApiResult<T> confirm(@Validated @RequestBody PayParam param) {
  9. //订单支付的业务逻辑
  10. ........
  11. //向前端推送消息
  12. String message="用户XXX下单";
  13. webSocket.sendMessage(message);
  14. return ApiResult.ok();
  15. }

测试(webSocket客户端网址)

https://websocket.jsonin.com/

 至此  完成消息推送。由于我加了配置(server.servlet.context-path: /api)  所以有/api  大家没有 的可以不加。

 希望对大家有帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/404206
推荐阅读
相关标签
  

闽ICP备14008679号