将 Server-Sent Events 添加到现有的 MVC 应用程序

介绍

Server-Sent Events(SSE)是一种开放的Web API,允许服务器通过HTTP连接将持续的流数据推送到客户端。与WebSocket相比,SSE通常更适合用于单向的数据传输。

在本文中,我们将介绍如何在现有的MVC应用程序中添加SSE功能,以实现Web应用程序中的实时更新。

步骤

第1步:使用NuGet安装SSE包

首先,我们需要使用NuGet安装Microsoft.AspNet.WebApi.SSE包。

--- --------------- ---------------------------

第2步:创建SSE控制器

创建一个名为SSEController的新控制器,并在该控制器中添加SSE操作。

----- ----------------
----- -------------------------
----- -----------------------
----- ----------------------------

------ ----- ------------- - -------------
-
    ---------
    ------ ----- ----------------------- -----
    -
        --- --- - --- ------------------

        ------ - ----
        --------- - ----------
        -------- - ------- ------

        ------ --- --------------------------------- ---------
    -
-

在上面的代码中,我们首先实例化一个ServerSentEvent对象,然后为其设置IdEventData属性。最后,我们将ServerSentEvent对象传递给SSEStream类型的构造函数,以生成SSE流响应。

第3步:更新前端代码以接收SSE事件

使用JavaScript来接收SSE事件很简单。您只需要使用一个新的EventSource对象来连接到SSE端点,并监听来自服务器的事件。

--- ------ - --- ------------------------

---------------- - --------------- -
    ------------------------
--

第4步:启动Self-Hosted Web API

最后,我们需要在程序中启动Self-Hosted Web API。

--- ------ - --- ---------------------------------------------------

---------------------------
    ----- -------------
    -------------- ------------------------
    --------- --- - -- - ----------------------- -
--

----- ------------------- ------ - --- ---------------------------
-
    --------------------------

    ------------------------------ --- --- -------- ----- --- --- -- ----------
    ------------------
-

结论

通过本文中的演示,您现在知道如何在现有的MVC应用程序中使用SSE实现实时更新。SSE非常适合用于推送频繁变化的数据,例如聊天应用程序或实时数据监控系统。虽然SSE比WebSocket更简单,但WebSocket可以提供更复杂的双向通信和数据格式,具体情况取决于您的应用程序需求。

完整的示例代码如下所示:

----- -------
----- ----------------
----- -------------------------
----- -----------------------
----- ----------------------------

------ ----- ------------- - -------------
-
    ---------
    ------ ----- ----------------------- -----
    -
        --- --- - --- ------------------

        ------ - ----
        --------- - ----------
        -------- - ------- ------

        ------ --- --------------------------------- ---------
    -
-

----- -------
-
    ------ ---- ------------- -----
    -
        --- ------ - --- ---------------------------------------------------
        
        ---------------------------
            ----- -------------
            -------------- ------------------------
            --------- --- - -- - ----------------------- -
        --
        
        ----- ------------------- ------ - --- ---------------------------
        -
            --------------------------
            
            ------------------------------ --- --- -------- ----- --- --- -- ----------
            ------------------
        -
    -
-
--------- -----
------
------
    ----- --------------- --
    ------------------ ------ ---------------
-------
------
    --------
        --- ------ - --- ------------------------

        ---------------- - --------------- -
            ------------------------
        --
    ---------
-------
-------

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6732e9910bc820c5823f79d1