• Azure SignaIR 将数据从服务器实时推送到Web 和移动浏览器、桌面应用、移动应用等客户端


    常规的推送技术:Websocket /服务器发送事件 (SSE) /长轮询等其他技术。

    SignaIR存在了很长的历史了,是.NET 平台最常用的推送技术,现在这个技术已经以Paas形式上线到了Azure 中国的 东部2 区域,而且支持C#/Java/JavaScript/Python等多种语言。

    Azure SignalR 服务已在各种行业中使用,适用于需要实时内容更新的任何应用类型。 下面是适合使用 Azure SignalR 服务的一些示例:

     

    • 高频率数据更新: 游戏、投票、轮询、竞拍。

    • 仪表板和监视: 公司仪表板、金融市场数据、即时销量更新、多玩家游戏排行榜和 IoT 监视。

    • 聊天: 实时聊天室、聊天机器人、在线客户支持、实时购物助手、信使、游戏内聊天,等等。

    • 地图实时定位: 物流跟踪、交货状态跟踪、运输状态更新、GPS 应用。

    • 实时定向广告: 个性化的实时推送广告和套餐、交互式广告。

    • 协作式应用: 共同著作、白板应用和团队会议软件。

    • 推送通知: 社交网络、电子邮件、游戏、行程通知。

    • 实时广播: 实时音频/视频广播、实时字幕、翻译、活动/新闻广播。

    • IoT 和互联设备: 实时 IoT 指标、远程控制、实时状态和位置跟踪。

    • 自动化: 基于上游事件的实时触发器。

    案例:使用Azrue Functions和Azure SignaIR开发广播型聊天室

    后端Functions的示例代码:

    https://github.com/Azure-Samples/signalr-service-quickstart-serverless-chat

    前端示例代码:

    https://azure-samples.github.io/signalr-service-quickstart-serverless-chat/demo/chat-v2/

     

    广播:

    [FunctionName("SendMessage")]
    public static Task SendMessage(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message, 
        [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
    {
        return signalRMessages.AddAsync(
            new SignalRMessage 
            {
                Target = "newMessage", 
                Arguments = new [] { message } 
            });
    }

    单播:

    [FunctionName("SendMessage")]
    public static Task SendMessage(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message, 
        [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
    {
        return signalRMessages.AddAsync(
            new SignalRMessage 
            {
                // the message will only be sent to this user ID
                UserId = "userId1",
                Target = "newMessage",
                Arguments = new [] { message }
            });
    }

    组播:

    [FunctionName("SendMessage")]
    public static Task SendMessage(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message,
        [SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
    {
        return signalRMessages.AddAsync(
            new SignalRMessage
            {
                // the message will be sent to the group with this name
                GroupName = "myGroup",
                Target = "newMessage",
                Arguments = new [] { message }
            });
    }

    使用 Azure SignalR 服务的优势是什么?

    提供一致的消息推送标准:

    SignalR 提供用于生成实时 Web 应用程序的多种技术的抽象概念。 Websocket 是最佳传输,但在其他选项不可用时,则使用服务器发送事件 (SSE) 和长轮询等其他技术。 基于服务器和客户端上受支持的功能,SignalR 自动检测并初始化合适的传输。

    本机 ASP.NET Core 支持:

    SignalR 服务通过 ASP.NET Core 和 ASP.NET 提供本机编程体验。 使用 SignalR 服务开发新的 SignalR 应用程序,或者从基于现有 SignalR 的应用程序迁移到 SignalR 服务只需付出少量的精力。 SignalR 服务还支持 ASP.NET Core 的新功能:服务器端 Blazor。

    广泛的客户端支持:

    SignalR 服务适用于广泛的客户端,例如 Web 和移动浏览器、桌面应用、移动应用、服务器进程、IoT 设备和游戏控制台。 SignalR 服务以不同的语言提供 SDK。 除了本机 ASP.NET Core 或 ASP.NET C# SDK 以外,SignalR 服务还提供 JavaScript 客户端 SDK 来支持 Web 客户端和许多 JavaScript 框架。 

    Java 客户端 SDK 还支持 Java 应用程序,包括 Android 本机应用。 SignalR 服务支持 REST API,与 Azure Functions 和事件网格集成后无需服务器。

    处理大规模客户端连接:

    SignalR 服务是针对大规模实时应用程序设计的。 SignalR 服务允许多个实例配合工作,扩展到数百万个客户端连接。 该服务还支持多个全局区域,以实现分片、高可用性或灾难恢复目的。

    消除了自承载 SignalR 的负担:

    与自承载 SignalR 应用程序相比,改用 SignalR 服务后,无需管理用于处理规模和客户端连接的后端平面。 完全托管的服务还简化了 Web 应用程序并节省了托管成本。 SignalR 服务覆盖全球,提供一流的数据中心和网络,可扩展到数百万个连接,附带 SLA 保障,并且符合 Azure 的所有合规与安全标准。

    为不同的消息传送模式提供丰富的 API:

    SignalR 服务允许服务器将消息发送到特定的连接、所有连接或属于特定用户或已放置在任意组中的连接子集。

    参考费用:

     

     

  • 相关阅读:
    获取其他进程中StatusBar的文本
    TStringGrid多选的复制与拷贝
    常用数据结构
    数据结构及算法
    时间复杂度和空间复杂度详解
    算法的时间复杂度和空间复杂度
    新增并管理媒体资源
    Node.js与MongoDB的基本连接示例
    Web API 2:Action的返回类型
    快递查询组件
  • 原文地址:https://www.cnblogs.com/shuzhenyu/p/12159546.html
Copyright © 2020-2023  润新知