vue项目使用websocket

 自己项目,封装的webSocket.js

import store from "../store";
import { socketUrl } from "./global_variable";

let socket;
// 是否已连接
let state = 0;

export function closeLink() {
  socket.close();
}
// websocket发送消息
export function SendMsg(msg) {
  if (state === 1) {
// 需要使用json字符串
    socket.send(JSON.stringify(msg));
  } else {
    socket = new WebSocket(socketUrl);
    socket.onopen = function() {
      state = 1;
      // alert('数据发送中...');
    };
  }
}
// 连接和接收的消息处理
export function oneConnect() {
  socket = new WebSocket(socketUrl);
  try {
    socket.onopen = function(msg) {
      state = 1;
      // const msgContent = JSON.parse(msg.data);
    };
    // 自己发送的内容、和接收别人发送的消息。回调都是这一个方法
    socket.onmessage = function(msg) {
      const msgContent = JSON.parse(msg.data);

      if (msgContent.MsgType > -1) {
        const contentMsg = {
          Id: msgContent.Id,
          CustomerSysNo: msgContent.CustomerSysNo,
          MsgType: msgContent.MsgType == 2 ? 5 : msgContent.MsgType,
          Content: msgContent.Content,
          CreatedDate: msgContent.Date,
          NickName: msgContent.NickName,
          HeadImage: msgContent.HeadImage,
          IsRead: false,
          isStudents: true,
          MediaDuration: parseInt(msgContent.MediaDuration),
          CoLectorName: msgContent.CoLectorName
        };

        if (
          contentMsg.HeadImage == "" ||
          contentMsg.HeadImage == null ||
          contentMsg.HeadImage == undefined
        ) {
          contentMsg.HeadImage =
            "xxxxxxxxxxxxxxxxxx.png";
        }
    // 这边我因为是vue项目。这是使用的vuex
        store.commit("addMsg", contentMsg);
      }
    };
    // 连接不稳定时,在关闭的时候继续连接websocket
    socket.onclose = function() {
      state = 0;
      oneConnect();
      // 关闭 websocket
      // socket.close()
    };
  } catch (ex) {
    console.err(ex);
  }
}

页面使用

<button @click="clickButton">{{ id + 1 }}</button>

clickButton () {

      this.id++

      var msg = {}

      msg.Content = this.id          // Content 服务器端定义

      msg.CustomerSysNo = 0

      SendMsg(msg)

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值