• NetCore SignalR 重连逻辑实现


    1-配置连接

    1 var connection = new signalR.HubConnectionBuilder() 
    2         .withUrl("http://localhost:5000/doopstream") 
    3         //重连函数,参数是重连间隔时间,单位毫秒
    4         .withAutomaticReconnect([0, 3000, 5000, 10000, 15000, 30000])
    5         .configureLogging(signalR.LogLevel.Information)
    6         .build();
    View Code

    2-启动逻辑

     1 //启动模块
     2     async function start(){ 
     3         connection.start().then(()=>getdata()).catch(err => {
     4         var msg="strat:"+err.toString();
     5         console.error(msg);
     6         setTimeout(()=>start(),5000);
     7     });
     8     }
     9     //触发启动
    10    start();
    View Code

    3-重连成功后的处理逻辑

    1 //重连成功后的处理机制
    2     connection.onreconnected((connectionId)=>{
    3         
    4         console.log("onreconnected:"+connectionId);
    5         getdata();
    6     });
    View Code

    4-连接关闭后的处理逻辑

    1 //连接关闭后的处理机制
    2     connection.onclose(async (error)=>{
    3         var msg="close:"+error.toString();
    4         console.error(msg);
    5          await start();
    6     });
    View Code

    5-数据接收处理逻辑

     1 /接收数据逻辑
     2 function getdata() {
     3         console.log("connected");
     4         connection.invoke("Subscribe", 'test').catch(err => console.error(err.toString()));
     5         connection.on("Receive", function (ch, message) {
     6             console.log(message);
     7             var p = document.createElement("p");
     8             p.innerHTML = ch + '#' + message;
     9             var div = document.getElementById("div");
    10             div.appendChild(p);
    11         }); 
    12     };
    View Code

    PS:SignalR js 库需要用 @microsoft/signalr@3.x.x 库,不然没有 withAutomaticReconnect 这个函数

    6-参考文档

    https://docs.microsoft.com/zh-cn/aspnet/core/signalr/javascript-client?view=aspnetcore-3.1

    PS:不知道是我的理解能力太差了,还是微软的中文文档没写好,折腾了一小会搞懂了,记录一下

  • 相关阅读:
    .net web开发经典图书总结
    Asp.net Web API实战
    扩展方法之二分查找
    在线转换图片文件等
    如何减少代码中的分支语句
    web插件化解决方案 开发分享
    .NET 4.5 MEF 基于约定的编程模型重典
    所有排序总结(内排序)
    生成zip文件
    open source ESB and integration platform
  • 原文地址:https://www.cnblogs.com/ganqiyin/p/12518473.html
Copyright © 2020-2023  润新知