小编pax*_*dae的帖子

如何使用 htmx 礼貌地关闭 SSE 事件流?

我正在尝试使用 htmx 设置一个短暂的事件流处理程序。想象一下,例如,流式传输 chatgpt 响应或类似内容。该流将持续 10-30 秒,然后我预计它会耗尽。

有没有办法让 htmx 监听 SSE 事件类型并关闭 SSE 源作为响应?

我有一个笨重的解决方法,我有一个用于流终止事件类型的 htmx 侦听器,然后该侦听器向仅返回一个空 div 的端点发出请求,并将该 div 交换为原始侦听器,以防止它无休止地尝试重新连接到 SSE 源。

但我觉得我一定错过了一些东西,因为这看起来不太优雅。

这就是我现在拥有的,如下。它有效(大部分),但是有更好的吗?谢谢!

<div
  id="chat-sse-listener"
  hx-ext="sse"
  sse-connect="{% url 'stream_test' %}"
>

  {# This listens for the next token in the stream and appends it to the chat. #}
  <div
    sse-swap="message"
    hx-target="#chat-message"
    hx-swap="beforeend"
  ></div>

  {# This listens for my custom EndOfStream SSE event and awkwardly replaces the entirely SSE listener with an empty div. #}
  <div
    hx-trigger="sse:EndOfStream"
    hx-target="#chat-sse-listener"
    hx-swap="outerHTML" …
Run Code Online (Sandbox Code Playgroud)

htmx

5
推荐指数
0
解决办法
310
查看次数

标签 统计

htmx ×1