常规的推送技术:Websocket /服务器发送事件 (SSE) /长轮询等其他技术。
视频讲解:
请观看B站视频:https://www.bilibili.com/video/av89516370
或本站视频(内容相同,二选一即可)
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 }
});
}