如何在 Flask 中使用 Server-sent Events

Server-sent Events (SSE) 是一种 HTML5 技术,它允许服务器向客户端推送事件流,而无需客户端发起请求。在前端开发中,SSE 可以用于实时更新数据、聊天室、通知等场景。本文将介绍如何在 Flask 中使用 SSE。

SSE 原理

SSE 是基于 HTTP 协议的一种技术,它的原理很简单:客户端通过 HTTP 连接到服务器,服务器发送一个带有特定 MIME 类型的响应,客户端通过 EventSource API 接收响应,并解析其中的事件流。

SSE 的 MIME 类型为 text/event-stream,服务器发送的响应格式如下:

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

其中,data 表示数据,hello 表示具体的内容,\n\n 表示数据结束。客户端通过 EventSource API 接收到响应后,可以通过 onmessage 回调函数处理数据。

Flask 中使用 SSE

在 Flask 中使用 SSE 需要使用 Flask-SSE 扩展,它提供了 SSE 的相关功能。首先需要安装 Flask-SSE:

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

然后在 Flask 应用中导入 SSE:

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

接下来,需要定义一个 SSE 路由,用于向客户端发送事件流:

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

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

在上面的代码中,我们定义了一个生成器,用于每秒向客户端发送一个事件流。然后将生成器返回给 Response 对象,设置 MIME 类型为 text/event-stream。

最后,在 Flask 应用中注册 SSE:

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

这样,当客户端访问 /stream 路由时,就可以接收事件流了。

客户端接收 SSE

在客户端中,可以使用 EventSource API 来接收 SSE。下面是一个简单的示例:

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

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

在上面的代码中,我们创建了一个 EventSource 对象,指定 SSE 的路由为 /stream。然后通过 onmessage 回调函数处理接收到的数据。

总结

本文介绍了如何在 Flask 中使用 Server-sent Events。通过 Flask-SSE 扩展,我们可以方便地向客户端推送事件流。在前端开发中,SSE 可以用于实现实时更新数据、聊天室、通知等功能。

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