websocket消息推送修改
最后更新于:2022-04-02 07:22:59
WebSocket支持同时给app端和pc端发送消息
#### (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();
}
}
}
//省略部分代码
//------其他类似方法修改同上----------
}
```
### 前端uniapp中使用WebSocket
```
```
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" :标识这是移动端
```
';