ASP.NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信。本文主要讲述如何在Vue.js中使用SignalR,以及断开重连。
withAutomaticReconnect
方法并传入一个重试计时数组,例如:[0, 2000, 4000, 6000]onreconnected:重新连接成功触发
onclose:自动重连全部失败后触发
<template>
<div>234678
</div>
</template>
<script>
import * as signalR from '@microsoft/signalr';
export default {
name: 'ChartControl',
data()
{
return {
connection: null,//连接
intervalId:0,//setInterval ID
autoReconnectTimerArray:[0, 2000, 4000, 6000],//重试计时数组
reconnectInterval:5000//5秒
}
},
created()
{
this.connection = new signalR.HubConnectionBuilder().withUrl('http://localhost:5138/hubs/msgHub')
.withAutomaticReconnect(this.autoReconnectTimerArray).build();
this.connection.start().then(() => {
console.log('初始连接成功');
}).catch(err => {
console.log('SignalR Connection Error: ', err)
this.intervalId=setInterval(()=>{
this.connection.start().then(() => {
console.log('初始化连接成功');
clearInterval(this.intervalId);
}).catch(
err=>{
console.log("初始化连接失败,5秒后重新初始化")
}
)
},this.reconnectInterval)
}
);
//重连之前调用 (只有在掉线的一瞬间,只进入一次)
this.connection.onreconnecting(error=> {
console.log("第一次掉线,重新连接");
});
//(默认4次重连),任何一次只要回调成功,调用
this.connection.onreconnected(connectionId => {
console.log("重新连接成功");
});
//(默认4次重连) 全部都失败后,调用
this.connection.onclose(error => {
console.log("重新初始化连接:");
this.intervalId=setInterval(()=>{
this.connection.start().then(() => {
console.log('初始化连接成功');
clearInterval(this.intervalId);
}).catch(
err=>{
console.log("初始化连接失败,5秒后重新初始化")
}
)
},this.reconnectInterval)
});
this.connection.on('ReceiveMessage', message => {
console.log(message);
});
}
}
</script>