在手机上相信都有来自服务器的推送消息,比如一些及时的新闻信息,这篇文章主要就是实现这个功能,只演示一个基本的案例。使用的是websocket技术。

一.什么是websocket

WebSocket协议是基于TCP的一种新的网络协议。它实现了客户端与服务器全双工通信,学过计算机网络都知道,既然是全双工,就说明了服务器可以主动发送信息给客户端。这与我们的推送技术或者是多人在线聊天的功能不谋而合。

为什么不使用HTTP 协议呢?这是因为HTTP是单工通信,通信只能由客户端发起,客户端请求一下,服务器处理一下,这就太麻烦了。于是websocket应运而生。

下面我们就直接开始使用Springboot开始整合。以下案例都在我自己的电脑上测试成功,你可以根据自己的功能进行修改即可。

二.整合websocket

1.添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>

2.新建config包,创建WebSocketConfig类

@Configuration
public class WebSocketConfig {@Beanpublic ServerEndpointExporter serverEndpointExporter(){return new ServerEndpointExporter ();}
}

3.新建service包,创建WebSocketServer类

@Component
@ServerEndpoint("/webSocket")
@Slf4j
public class WebSocket {//与某个客户端的连接会话,需要通过它来给客户端发送数据private Session session;//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<WebSocket>();/*** 连接建立成功调用的方法*/@OnOpenpublic void onOpen(Session session){this.session=session;webSocketSet.add(this); //加入set中log.info("【WebSocket消息】有新的连接,总数:{}",webSocketSet.size());}/*** 连接关闭调用的方法*/@OnClosepublic void onClose(){webSocketSet.remove(this);//从set中删除log.info("【WebSocket消息】连接断开,总数:{}",webSocketSet.size());}/*** 收到客户端消息后调用的方法* @param message 客户端发送过来的消息*/@OnMessagepublic void onMessage(String message ){log.info("【WebSocket消息】收到客户端发来的消息:{}",message);}public void sendMessage(String message){for (WebSocket webSocket:webSocketSet) {log.info("【webSocket消息】广播消息,message={}",message);try {webSocket.session.getBasicRemote ().sendText(message);} catch (Exception e) {e.printStackTrace ();}}}
}

4.在前端js里面加入接受后端向前端主动推送的消息

 var webSocket = null;if('WebSocket' in window){webSocket = new WebSocket('ws://localhost:8081/webSocket')}else {alert('该游览器不支持webSocket!')}webSocket.onopen =function (event) {console.log('建立连接');}webSocket.onclose = function (event) {console.log("连接关闭");}webSocket.onmessage = function (event) {console.log('收到消息'+event.data)//单窗提醒,播放音乐$('#myModal').modal('show');}webSocket.onerror = function () {alert('webSocket通信发生错误!')}window.onbeforeunload = function () {webSocket.close();}

5.测试:在添加营销机会Service层引入,发送webSocket消息

//发送webSocket消息
webSocket.sendMessage ("你有新的营销用户加入:" + saleChance.getLinkMan ());

6.接口测试

7. 这时后端向前端主动推送消息,前端也收到后端发送的消息通知。

案例Springboot+Webebsocket整合到此结束,谢谢观看。

Springboot整合Websocket(推送消息通知)相关推荐

  1. Android中集成Jpush实现推送消息通知与根据别名指定推送附示例代码下载

    场景 经常会有后台服务向Android推送消息通知的情况. 实现 首先在Android Studio中新建一个Android应用 在Project根目录的build.gradle中配置了jcenter ...

  2. Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务

    Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务_IT_ziliang的博客-CSDN博客 WebSocket是一种在单个TCP连接上进行全双工 ...

  3. spring-boot整合smart-doc推送接口文档到torna报错Failure to find xxx... resolution will not be reattempted until

    spring-boot整合smart-doc推送接口文档到torna报错Failure to find xxx- resolution will not be reattempted until th ...

  4. springboot整合websocket实现一对一消息推送和广播消息推送

    springboot基础环境,请参考springboot文档 maven依赖 <dependency><groupId>org.springframework.boot< ...

  5. SpringBoot使用SSE推送消息

    序言   服务器推送技术在一些需要实时数据的开发场景会被广泛使用,要获得实时数据,前端轮询的方式明显是被摒弃的,大部分人第一时间想到的就是websocket.之前的一个项目也是用的websocket, ...

  6. SpringBoot整合极光推送

    一. 极光推送代码 1. maven依赖 <!--极光推送--> <dependency><groupId>cn.jpush.api</groupId> ...

  7. Android,ios,安卓app推送消息通知,java后台向手机推送app的通知教程

    文章目录 一.业务介绍 1.1 产品简介 1.2 名词解释 1.3 消息推送流程 二.应用创建 三.客户端 SDK 集成 3.1 Android 3.2 iOS 四.服务端推送 4.1 服务端消息下发 ...

  8. 服务器极光推送消息推送,极光后台服务器推送消息通知

    1:推送工具类 package com.jetf.util; import java.util.Map; import org.slf4j.Logger; import org.slf4j.Logge ...

  9. Java中集成极光推送实现给Android提送消息通知(附代码下载)

    场景 Android中集成极光推送实现推送消息通知与根据别名指定推送附示例代码下载: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

最新文章

  1. 德勒报告:2018年全球生命科学发展趋势
  2. 连接池和 Timeout expired异常
  3. oracle mysql 数据验证工具_Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)
  4. python类self_Python类中的self到底是干啥的
  5. ofdm误码率仿真代码_共享源代码之MSK仿真(1)
  6. MySQL双主(master-master)补充
  7. 4、线程--线程同部
  8. 你朋友圈里原来这些文章最火
  9. 平时常见的视频文件格式有哪些呢?
  10. 电脑磁盘分区数据丢失怎么办 磁盘分区丢失的数据怎么恢复
  11. Swift版本之大雪纷飞
  12. qq扫描用户文件传腾讯服务器,QQ被传窃取用户浏览器隐私,腾讯称为判断恶意登录而读取的数据...
  13. oracle存储过程语法累加,Oracle 存储过程语法总结及练习
  14. 咪咕版kindle利用“隐藏浏览器”打开微信读书
  15. 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游
  16. java版-五子棋-个人-源码参考
  17. 【MySQL】查询优化
  18. 计算机采用的编码机制是什么,编码机制
  19. 【HTTP协议】发展历程
  20. 时间序列预测模型TBATS

热门文章

  1. 西南大学907专硕考研,西南大学计算机808学硕
  2. 计算机辅助普通话水平测试第三项占多少分,计算机辅助普通话水平测试第三项朗读短文占...
  3. android qmui教程,QMUI-Android
  4. 英文文献翻译成中文,推荐哪个软件?
  5. 旅游流的概念_旅游流的概念界定与理论内涵新论
  6. Virtual host / experienced an error on node rabbit@ xx and may be inaccessible Totals问题的解决
  7. 苹果8a1660是什么版本_苹果A1660是什么型号?
  8. 使用函数打印n*n的乘法口诀表
  9. Seguros Sura选择Akur8来提升其在拉美市场的保险定价流程
  10. 互联网晚报 | 12月30日 星期四 | 百度网盘青春版正式上线;汽车之家回应“年底大裁员”;A股年内成交额创历史新高...