signalR+websocket:实现消息实时通讯——技能提升

signalR

解决步骤1:npm install @microsoft/signalr@6.0.6

安装指定版本的@microsoft/signalr,我这边安装的版本是6.0.6

解决步骤2:引入import * as signalR from '@microsoft/signalr';

import * as signalR from '@microsoft/signalr';

下面第三步会用到token,所以此处也先引用一下cookie
import Cookie from 'js-cookie';

解决步骤3:使用方法

js 复制代码
let hubUrl = process.env.VUE_APP_API_BASE_URL + '/my_hub';
var token = Cookie.get('Authorization');
token = token.replace('Bearer', '').trim();
this.connection = new signalR.HubConnectionBuilder()
  .withUrl(hubUrl, { accessTokenFactory: () => token })
  .withAutomaticReconnect()
  .build();
this.connection
  .start()
  .then(() => {
    // 连接成功后,订阅消息
    console.log('连接成功后,订阅消息');
  })
  .catch((err) => {
    // 连接异常时的处理
    console.log('连接异常时的处理');
  });
//自动重连成功后的处理
this.connection.onreconnected((connectionId) => {
  console.log(connectionId);
});
this.connection.on('ReceiveMessage', (message) => {
  console.log(message.split('::')[0]);
  this.$notification.info({
    message: message.split('::')[0],
    description: message.split('::')[1],
    onClick: () => {
      console.log('Notification Clicked!');
    },
    duration: 4.5,
  });
});

websocket

解决步骤1:定义参数

js 复制代码
data(){
	return{
	  websocket: null,
      setIntervalWesocketPush: null,
      againSocket: true,
	}
}

解决步骤2:初始化websocket

js 复制代码
initWebSocket() {
  let that = this;
  var websocket = null;
  if ('WebSocket' in window) {
    websocket = new WebSocket('wss://echo.websocket.org/');
  } else {
    alert('该浏览器不支持websocket!');
  }
  websocket.onopen = function (event) {
    console.log('建立连接');
    websocket.send('Hello WebSockets!');
  };
  websocket.onclose = function (event) {
    console.log('连接关闭');
    that.reconnect(); //尝试重连websocket
  };
  //建立通信后,监听到后端的数据传递
  websocket.onmessage = function (event) {
    console.log(event);
  };
  websocket.onerror = function () {
    // notify.warn("websocket通信发生错误!");
    // initWebSocket()
  };
  window.onbeforeunload = function () {
    websocket.close();
  };
},

解决步骤3:断连后的重连

js 复制代码
// 重连
reconnect() {
  console.log('正在重连');
  // 进行重连
  setTimeout(() => {
    this.initWebSocket();
  }, 1000);
},
相关推荐
壹方秘境3 小时前
ChatTCP是怎么像Wireshark那样识别TCP重传、乱序和心跳保活的
网络协议·tcp/ip·wireshark
祺风挽楠3 小时前
ansible编辑
网络·ansible
莫名的好感°4 小时前
手机RAR解压怎么选?2026年二季度四款产品问答
服务器·网络·智能手机
AI科技星6 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
liulilittle7 小时前
固定数组时间轮的槽过载优化:桶链表与批次执行
网络·数据结构·链表
行走__Wz7 小时前
【网工入门-eNSP模拟-05】静态路由
网络
xiangw@GZ7 小时前
802.11全系列标准调制编码与速率档对应关系
网络·单片机·嵌入式硬件·架构
liulilittle8 小时前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
27669582929 小时前
泡泡玛特app 腾讯企业加固/支付宝加固脱修frida rpc调用
网络·网络协议·rpc·frida·泡泡玛特·ppmt·泡泡玛特app-rpc调用
其实防守也摸鱼9 小时前
软件安全与漏洞--Windows底层原理与软件逆向工程基础
linux·网络·数据库·算法·安全·安全架构·软件安全与漏洞