net-core-30-Signalr-01-基础篇

71次阅读

共计 1524 个字符,预计需要花费 4 分钟才能阅读完成。

因为将 signalr 作为单独的站点,此处需要建立两个项目,一个专门用于 signalr 作为推送项目,一个客户端 (实际的业务项目)

基础知识速览

Clients 对象属性

属性 描述
All 在所有连接的客户端上调用方法
Caller 在调用集线器方法的客户端上调用方法
Others 除当前连接外的所有连接

Clients 对象方法

方法 描述
AllExcept 在所有连接的客户端(指定的连接除外)上调用方法
Client 在特定连接的客户端上调用方法 (单个)
Clients 在特定连接的客户端上调用方法 (多个)
Group 对指定组中的所有连接调用方法
GroupExcept 对指定组中的所有连接调用方法,指定的连接除外
Groups 在多组连接上调用方法
OthersInGroup 对一组连接调用方法,而不包括调用该集线器方法的客户端
User 对与特定用户关联的所有连接调用方法
Users 对与指定用户相关联的所有连接调用方法

Signalr 推送端

  • 通过命令行或者 vs 2019 新建.netcore web 项目,选择.net core 3.0、webapi
  • 建立一个 Hub

    public class NotifyHub : Hub
    {}
  • 修改 Startup 中的 ConfigServices 方法,注册对应的服务

    // 添加 Signalr
    services.AddSignalR(config =>
    {
        // _webEnv 为通过依赖注入在 Startup 的构造函数中注入的 IWebHostEnvironment
        if (_webEnv.IsDevelopment())
        {config.EnableDetailedErrors = true;}
    });
  • 修改 Configure 配置 HTTP 请求的管道

    ...
    app.UseRouting();
    app.UseEndpoints(endpoints =>{endpoints.MapHub<NotifyHub>("/notify-hub");
    });
    

业务端

相关文档

  • 创建连接对象

    var connection=new signalR.HubConnectionBuilder()
    .configureLogging(signalR.LogLevel.Error) // 前端控制台的日志级别,根据需要配置
    .withUrl('http://localhost:50001/notify-hub') // 连接地址, 这个地址是 signalr 项目的地址
    .withAutomaticReconnect([0, 2000, 5000, 10000, 20000]) // 配置重连的时间
    .build();
    
    // 重连的时候触发
    connection.onreconnecting(function (info) {console.info('----------------------------------signalr-- onreconnecting', info);
    });
    
    // 连接关闭的回调
    connection.onclose(function (err) {console.info('--------------------------------signalr-- onclose', err);
    });
    
    connection.start().then(function (data) {console.log('已成功连接到 signalr 服务器')
    }).catch(function (error) {console.error(error.toString());
    });
    

更多内容请通过快速导航查看下一篇

快速导航

标题 内容
索引 .net core 3.0 Signalr – 实现一个业务推送系统
下一篇 .net core 3.0 Signalr – 02 使用强类型的 Hub
源码地址 源码
官方文档 官方文档

正文完
 0