多种实时通信技术

闷骚的单杠 / 123 / 2023-09-11 18:07:26

ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz

SignalR 介绍

SignalR 是一个开源的实时通信库,用于构建实时、双向的应用程序。它提供了简化实时通信的功能,允许服务器主动向客户端推送数据,实现实时更新和即时通知的功能。SignalR 具有高度集成性、跨平台支持和可扩展性,适用于实时聊天、在线游戏、监控系统等各种应用场景。

SignalR 提供了多种实时通信技术

WebSocket:SignalR 使用 WebSocket 作为首选的实时通信协议,WebSocket 提供了低延迟、双向通信的能力,并且在服务器和客户端之间建立持久连接,支持实时数据推送和接收。

Server-Sent Events(SSE):当浏览器或客户端支持 SSE 但不支持 WebSocket 时,SignalR 可以使用 Server-Sent Events 进行实时通信。SSE 是一种基于 HTTP 的单向通信协议,服务器可以主动向客户端推送事件消息。

Long Polling:对于不支持 WebSocket 和 SSE 的环境,SignalR 使用长轮询(Long Polling)作为备选方法。长轮询是一种模拟实时通信的技术,客户端发送请求给服务器,服务器保持请求打开并等待新数据到达时再响应。

其他传输方式:除了 WebSocket、SSE 和长轮询,SignalR 还支持其他传输方式,如 Forever Frame(一个使用隐藏的 iframe 来模拟实时通信的技术)和 AJAX 短轮询(在每次请求中都进行轮询以获取最新数据)。

通过支持多种实时通信技术,SignalR 在不同的环境中能够选择最佳的通信方式,从而实现实时、可靠的双向通信。这使得开发者可以构建适应不同网络和浏览器的实时应用程序,并提供优秀的用户体验。

集线器 hub

ignalR 中的集线器(Hub)是一种特殊的组件,它充当了服务器和客户端之间的中间人,用于处理实时通信的逻辑。通过使用集线器,开发人员可以简化实时通信的编程模型。SignalR 集线器提供以下功能:客户端与服务器之间的方法调用:在集线器中定义的方法可以由客户端调用,而客户端也可以定义方法供集线器调用。这使得服务器和客户端能够相互之间进行双向的方法调用,方便实现实时数据传输和通信。组管理:集线器支持将客户端连接分组,并对组进行管理。这样,可以将特定的客户端连接到同一个组中,以实现广播消息或针对特定组发送消息的功能。生命周期管理:集线器管理客户端连接的生命周期,可以在客户端连接建立、断开或重新连接时触发相应的事件。这些事件可以用于执行一些初始化或清理操作,以及监控连接状态。状态管理:集线器可以存储和管理与客户端连接相关的状态信息,这些信息可以在不同的方法调用之间共享。这对于跟踪和管理用户状态是很有用的,例如聊天应用程序中的在线用户列表。在 SignalR 中,集线器是通过继承 Hub 类来创建的。开发人员可以在集线器中定义服务器端和客户端之间的方法,并使用相应的客户端库来调用这些方法。SignalRDemo1.创建web应用
图片
2.添加集线器hubpublic class ChatHub : Hub

{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

3.Program.cs 添加注入与终结点
图片


作者
闷骚的单杠
许可协议
CC BY 4.0
发布于
2023-09-11
修改于
2024-07-14
Bonnie image
尚未登录