这里指的API就是Pusher。 (您不需要了解有关 Pusher 的任何信息。)
以下是加载 Pusher 的方法:
const pusher = new Pusher({
appId: [id],
key: [key],
secret: [secret],
cluster: "ap3",
useTLS: true
});
由于这需要密钥,出于安全目的,我从
+server.ts
加载它。
// server.ts
import type { RequestHandler } from "./$types";
import Pusher from 'pusher';
export const POST:RequestHandler = async ({ request }) => {
const pusher = new Pusher({
appId: [id],
key: [key],
secret: [secret],
cluster: "ap3",
useTLS: true
});
const req = await request.json();
const res = await pusher.trigger("chat", "message", req);
return new Response((JSON.stringify({"result": res})), {
headers:{
'Content-Type': 'application/json'
}
})
}
使用此代码将在每次 POST 到服务器时重新加载 Pusher。
然而,考虑到 Pusher 是一个用于构建实时的 API,这非常慢。
每次通话大约耗时 1 秒。
使用“npm run dev”运行时可以立即运行,但只有使用 Vercel 部署时才这么慢。
我认为这个问题是由打开服务器所需的时间引起的,因为 Vercel 在不使用服务器时将其关闭。
如果预加载 Pusher,然后直接在
pusher.trigger
中使用 +page.svelte
,不是会更快吗?但密钥还是不能泄露。
有没有办法只加载一次 API,而不是每次调用服务器时加载?