Websocket业务对接

项目对接完Websocket后,实现业务对接,通过后台业务对接,推送相对应的业务消息给客户端,客户端处理对应业务的消息

系统通告业务对接示例

系统通告管理中,管理员可发两种类型的消息,全体用户和指定用户发送

发送的消息是一个json串

(1)调用WebSocket 服务

  1. @Resource
  2. private WebSocket webSocket;

(2)方法中调用

cmd为业务类型,例如topic表示系统消息,user表示用户消息,可以自定义cmd类型,客户端根据返回的cmd类型处理不同的业务响应

全体发送

  1. //创建业务消息信息
  2. JSONObject obj = new JSONObject();
  3. obj.put("cmd", "topic");//业务类型
  4. obj.put("msgId", sysAnnouncement.getId());//消息id
  5. obj.put("msgTxt", sysAnnouncement.getTitile());//消息内容
  6. //全体发送
  7. webSocket.sendAllMessage(obj.toJSONString());

单个用户发送

  1. //创建业务消息信息
  2. JSONObject obj = new JSONObject();
  3. obj.put("cmd", "user");//业务类型
  4. obj.put("msgId", sysAnnouncement.getId());//消息id
  5. obj.put("msgTxt", sysAnnouncement.getTitile());//消息内容
  6. //单个用户发送 (userId为用户id)
  7. webSocket.sendOneMessage(userId, obj.toJSONString());

多个用户发送

  1. //创建业务消息信息
  2. JSONObject obj = new JSONObject();
  3. obj.put("cmd", "user");//业务类型
  4. obj.put("msgId", sysAnnouncement.getId());//消息id
  5. obj.put("msgTxt", sysAnnouncement.getTitile());//消息内容
  6. //多个用户发送 (userIds为多个用户id,逗号‘,’分隔)
  7. webSocket.sendMoreMessage(userIds, obj.toJSONString());

(3)vue 客户端根据返回的cmd类型处理不同的业务响应

  1. websocketonmessage: function (e) {
  2. console.log("-----接收消息-------",e.data);
  3. var data = eval("(" + e.data + ")"); //解析json对象
  4. if(data.cmd == "topic"){
  5. //TODO 系统通知
  6. }else if(data.cmd == "user"){
  7. //TODO 用户消息
  8. }
  9. },