Server-sent Events 用于 Angular 5

阅读时长 7 分钟读完

Server-sent Events 用于 Angular 5

在前端开发中,实时性一直是一个比较棘手的问题。在早期的开发中,多数前端开发者使用的是基于轮询的方案,这会导致效率不高,并且会消耗大量的带宽和服务器资源。随着技术的发展,新的方案被推陈出新,其中比较有代表性的一个就是 Server-sent Events(SSE),也就是基于服务器推送的一种全新的实时性方案。

本文主要介绍 Server-sent Events 的基本原理和 Angular 5 中如何使用 Server-sent Events 实现数据的实时传输。在文章最后会提供一个完整的示例代码,帮助读者更好地理解。

一、Server-sent Events 基本原理

简单来说,Server-sent Events 就是通过服务器推送的方式,将实时数据自动发送给客户端。客户端只需要接收数据,并根据需要进行处理。

Server-sent Events 的流程如下图所示:

  1. 建立一个 SSE 连接

客户端通过建立一个 SSE 连接来从服务器获取数据。

  1. 服务器端发送数据

服务器端在任何时候都能够向 SSE 连接发送数据,并将数据传送给客户端。

  1. 客户端接收数据

客户端接收到服务器发送的数据,并将数据解析以供使用。

二、Angular 5 中 SSE 的使用

在 Angular 5 中,我们可以使用 @angular/common/http 中的 HttpClient 模块来实现 Server-sent Events。具体实现过程如下:

1.引入 HttpClient 模块来建立 SSE 连接

2.定义 SSE 类

在创建 SSE 类之前,我们需要定义一个接口,以规范服务器返回数据的格式。

SSE 类的定义如下:

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

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

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

3.在组件中使用 SSE

组件中使用此服务时,使用订阅者模式来监听返回的数据。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、总结

本文在介绍 Server-sent Events 基本原理的同时,也讲述了如何在 Angular 5 中使用 Server-sent Events 实现实时数据传输。对于有实时性要求的前端开发者,Server-sent Events 是一种非常好的解决方案,相比传统的轮询,Server-sent Events 在性能和用户体验上都有着较大的提升。另外,读者在使用 Server-sent Events 时,也应该注意到 SSE 在不同浏览器中的兼容性问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6461e42c968c7c53b0339a4f

纠错
反馈