在vue中如何使用signalR对接数据

 ① 通过npm安装SignalR:

npm install --save @microsoft/signalr

②在界面中引入包:

import * as signalR from '@microsoft/signalr'

③在created中创建连接并注册方法(参数需要和后端约定好)

export default {
  data() {
    return {
      connection: "",
      user: userInfo.value.nickName,
      message: "",
      msgList: []
    };
  },
  created() {
    this.init();
  },
  methods: {
    init() {
      // 创建SignalR连接
      this.connection = new signalR.HubConnectionBuilder()
        .withUrl("http://localhost:8777/msghub", {})
        .configureLogging(signalR.LogLevel.Error)
        .build();

      // 启动SignalR
      this.connection.start();
    }
  }
};

 ④发送消息封装

sendMsg() {
      this.connection.invoke("SendChat", this.user, this.message);
      console.log(this.msgList);
    }

⑤定义接收的方法

this.connection.on("ReceiveMessage", data => {
        this.msgList.push(data);
        console.log(this.msgList);
      });

完整代码:

 <div v-for="(v, k) in msgList" :key="k" class="text item">{{ v.user + ":" + v.message }}</div>

<script >
import useUserStore from '@/store/modules/user'
import * as signalR from '@microsoft/signalr'

const userInfo = computed(() => {
  return useUserStore().userInfo
})


export default {
  data() {
    return {
      connection: "",
      user: userInfo.value.nickName,
      message: "",
      msgList: []
    };
  },
  created() {
    this.init();
  },
  methods: {
    init() {
      this.connection = new signalR.HubConnectionBuilder()
        .withUrl("http://chatvue.aerwen.net/msghub", {})
        .configureLogging(signalR.LogLevel.Error)
        .build();
      this.connection.on("ReceiveMessage", data => {
        this.msgList.push(data);
        console.log(this.msgList);
      });
      this.connection.start();
    },
    sendMsg() {
      this.connection.invoke("SendChat", this.user, this.message);
      console.log(this.msgList);
    }
  }
};
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值