Azure SignaIR 將數據從服務器實時推送到Web 和移動瀏覽器、桌面應用、移動應用等客戶端

本文的完整視頻講解:html


https://v.qq.com/x/page/u30479us7j4.html
前端


常規的推送技術:Websocket /服務器發送事件 (SSE) /長輪詢等其餘技術。git


SignaIR存在了很長的歷史了,是.NET 平臺最經常使用的推送技術,如今這個技術已經以Paas形式上線到了Azure 中國的 東部2 區域,並且支持C#/Java/JavaScript/Python等多種語言。github

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 服務容許服務器將消息發送到特定的鏈接、全部鏈接或屬於特定用戶或已放置在任意組中的鏈接子集。

參考費用:

 

相關文章
相關標籤/搜索