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" :标识这是移动端 ```
';