如何在 SvelteKit 中实现服务器发送事件 (SSE)?

问题描述 投票:0回答:2

如果不使用自定义快递服务器,我找不到 SvelteKit 的教程。 API端点是否有任何替代方案?

我试过自己设置 API 端点,但我无法让它在数据更改时发送更新。

node.js server-sent-events sveltekit
2个回答
2
投票

您可能必须返回一个

ReadableStream
,您可以将更新写入其中。这样连接就不会关闭。

截至目前有一个未解决的问题关于更多文档。


0
投票

感谢@Paolo 的想法。这是一个更具体的例子:

在您的

+server.js
文件中,执行以下代码:

// SSE only supports GET request
export async function GET({ url }) {
    const stream = new ReadableStream({
        start(controller) {
            // You can enqueue multiple data asynchronously here.
            const myData = ["abc", "def"]
            myData.forEach(data => {
                controller.enqueue(`data: ${data}\n\n`)
            })
            controller.close() 
        },
        cancel() {
            // cancel your resources here
        }
    });

    return new Response(stream, {
        headers: {
            // Denotes the response as SSE
            'Content-Type': 'text/event-stream', 
            // Optional. Request the GET request not to be cached.
            'Cache-Control': 'no-cache', 
        }
    })
}
© www.soinside.com 2019 - 2024. All rights reserved.