什么是 SSE?
SSE(Server-Sent Events)是一个 HTML5 的新特性,允许服务器向客户端发送事件流,实现了实时性的数据更新。
SSE 基于 HTTP 协议,不需要使用如 WebSocket 这样的独立协议,也不需要像 AJAX 那样的轮询来实现数据的实时更新。相比较而言,SSE 更加简单、轻量,且不会占用过多的服务器资源。SSE 可以被广泛应用于在线聊天、消息推送、实时股票行情、实时数据监控等场景。
如何在 ASP.NET 中实现 SSE?
下面将介绍如何在 ASP.NET MVC 中实现 SSE,通过代码实现 SSE 服务端的功能。
前置条件
- Visual Studio 2017 或更高版本
- .NET Framework 4.6.1 或更高版本
实现步骤
- 创建 ASP.NET MVC 项目
在 Visual Studio 中创建 ASP.NET MVC 项目,并将其命名为 SSEExample。
- 安装 Microsoft.AspNet.WebApi.Core 包
在 Visual Studio 的 NuGet 包管理器中搜索 Microsoft.AspNet.WebApi.Core 包,并进行安装。
- 创建 SSEController
在 Controllers 文件夹下创建 SSEController.cs,并添加如下代码:
-- -------------------- ---- ------- ----- ----------------- ----- ----------------------- ----- ----------- ----- ---------------- ------ ----- ------------- - ------------- - --------- ------ ------------------- ---------------------- -------- - --- -------- - ------------------------- ---------------- - --- ----------------------- -------- -------- -------- -- - ----- ---------------------------------------------------- - --- ------- - -------------------------------- --- ----- - ----------------------------------------- - - ------- - -------- ----- ------------------------ -- -------------- ----- -------------------- ------------------- - --- ------------------------------------ - --- ------------------------------------------------------------------ ------ --------- - -
该代码创建了一个名为 SSEController 的 Web API 控制器,并提供了一个名为 Get 的方法用于返回 SSE 事件流。在 SSE 事件流中,每一行数据都需以“data:”开头,以“\n\n”结尾。
- 配置路由
在 App_Start 文件夹下创建 RouteConfig.cs,并添加如下代码:
-- -------------------- ---- ------- ----- --------------- ----- ------------------- ------ ----- ----------- - ------ ------ ---- ------------------------------ ------- - ------------------------------------------------- ---------------- ----- ---------- ---- ----------------------------- --------- --- - ---------- - ------- ------ - -------- -- - --------------------- - -- - -
在 Global.asax.cs 中修改如下代码:
-- -------------------- ---- ------- ----- ---------------- ----- --------------- ----- ------------------------ ----- ------------------- ------ ----- -------------- - -------------------------- - --------- ---- ------------------- - ----------------------------------------------------- ------------------------------------ ---------------------------------------------------------- ---------------------------------------------- -------------------------------------------------- - -
这样,我们就完成了 SSEController 的实现和路由的配置。
客户端页面
下面是客户端页面 SSEExample\Views\Home\Index.cshtml 的代码:
-- -------------------- ---- ------- --------- ----- ------ ------ ---------- --------------- ------- -------------------------------------------------------- -------- ---------- -- - -- ---------------------- - -- -- ----------- ---- --- --- --- --------- - --- ---------------------------- ------------------------------------- -------- --- - ------------------------------- -- ------- ----------------------------------- -------- --- - -- --------------------- -- ------------------- - ----------------------- ---------- - -- ------- - ---- - ----------- ------- ---- --- ------- ------- - --- --------- ------- ------ ----- ---------- ---------- ---- ----------------------- ------ ------- -------
该代码利用 HTML5 的 EventSource 对象实现了 SSE 的连接,当事件流中有新的消息到来时,页面就会自动更新显示新的消息。
总结
本文介绍了 SSE 技术的基本概念、如何在 ASP.NET 中实现 SSE 服务端,并提供了一个完整的示例代码。如果您需要实现一个实时的数据更新功能,SSE 绝对是一个不错的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6450eed5980a9b385b9cc346