websocket消息推送修改

server/2025/1/15 21:39:01/

WebSocket支持同时给app端和pc端发送消息

websocket操作类">(1) WebSocket操作类

通过修改该类WebSocket可以进行同一用户多端的消息推送

@Component
@Slf4j
@ServerEndpoint("/websocket/{userId}")
public class WebSocket {//省略部分代码//1.增加app端标识private String APP_SESSION_SUFFIX = "_app"; // 2.修改单点消息方法public void sendOneMessage(String userId, String message) {Session session = sessionPool.get(userId);if (session != null&&session.isOpen()) {try {log.info("【websocket消息】 单点消息:"+message);session.getAsyncRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}//--------3.增加APP端消息推送--------Session session_app = sessionPool.get(userId+APP_SESSION_SUFFIX );if (session_app != null&&session_app .isOpen()) {try {log.info("【websocket移动端消息】 单点消息:"+message);session_app .getAsyncRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}//省略部分代码//------其他类似方法修改同上----------
}

websocket">前端uniapp中使用WebSocket

<script>//引用socket.jsimport socket from '@/common/js-sdk/socket/socket.js'export default {data() {return {}},mounted() { //初始化websocketthis.onSocketOpen()this.onSocketReceive()},destroyed: function () { // 离开页面生命周期函数socket.closeSocket()},methods: {onSocketOpen: function () {// WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于httpssocket.init('websocket'); //对应要连接的socket},onSocketReceive: function () {var _this=thissocket.acceptMessage = function(res){// console.log("页面收到的消息", res);if(res.cmd == "topic"){//系统通知}else if(res.cmd == "user"){//用户消息} else if(res.cmd == 'email'){//邮件消息}}}}}
</script>

socket.js连接url部分代码修改

init(socket_type,callback) {//省略部分代码let url=this.socketUrl.replace("https://","wss://").replace("http://","ws://")+"/"+socket_type+"/"+store.state.userid+"_app";//省略部分代码
}//相关参数
socketUrl :对应api地址
socket_type :对应你要连接的是哪个websocket
"_app"  :标识这是移动端

http://www.ppmy.cn/server/117529.html

相关文章

说说synchronized的锁升级过程

在 JDK 1.6之前&#xff0c;synchronized 是一个重量级、效率比较低下的锁&#xff0c;但是在JDK 1.6后&#xff0c;JVM 为了提高锁的获取与释放效&#xff0c;,对 synchronized 进行了优化&#xff0c;引入了偏向锁和轻量级锁&#xff0c;至此&#xff0c;锁的状态有四种&…

JQuery:后台接收Json串与对象

一、接收对象 @RequestParam可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST。 <script src="http://libs.baidu.com/jquery/1.9.…

vue-router + el-menu

1. el-menu的router属性 在el-menu中有一属性&#xff1a;router&#xff0c;默认是false 1.1 使用默认配置&#xff0c;即false 这时候需要自己在点击子菜单的时候进行导航&#xff0c;在el-menu添加方法&#xff0c;里边有三个参数 index: 选中菜单项的 index,indexPath…

四、(JS)JS中常见的加载事件

一、文档加载监听 &#xff08;1&#xff09;抛出疑惑&#xff0c;什么是文档加载监听&#xff1f;为什么要有这个东西&#xff1f; 老样子&#xff0c;我们先讲一个场景&#xff0c;带着大家熟悉为什么会有文档加载监听&#xff0c;是来解决什么问题来着的。 我们先看下这段…

使用QT编写有图形界面的TCP局域网聊天室(app)

服务器&#xff1a; 实现方法&#xff1a; 1.使用QTcpServer类实例化一个对象&#xff0c;就得到了一个服务器端 2.调用该类对象的成员函数 listen 将服务器启动监听&#xff0c;该函数会进行绑定ip和端口号 ip地址可以指定也可以由系统自动绑定&#xff0c;端口号也可以自…

Vue 中常用的基础指令

一. 什么是 Vue 指令 指令的定义和作用 指令是通过 Vue 实例的directives选项进行定义的。在指令的定义中&#xff0c;需要提供一个bind函数&#xff0c;它在指令第一次绑定到元素时被调用&#xff0c;可以执行一些初始化的操作。还可以提供update函数&#xff0c;它在指令所…

PHP函数如何传递数组参数

php 函数可以使用数组参数传递大量数据。语法&#xff1a;参数类型前加上方括号 ([])。例如&#xff1a;myfunction(array $arr)。实战案例&#xff1a;计算数组元素平均值。注意&#xff1a;数组参数默认为引用传递&#xff0c;类型提示可提高代码可读性&#xff0c;数组解构可…

【网络安全】-文件上传漏洞

文件操作漏洞包括文件上传漏洞&#xff0c;文件包含漏洞&#xff0c;文件下载漏洞。 文章目录 前言 什么是文件上传漏洞&#xff1f; 文件上传的验证与绕过&#xff1a; 1.前端js验证&#xff1a;   Microsft Edge浏览器&#xff1a; Google Chrome浏览器&#xff1a; 2.后端…