mun*_*ger 10 javascript socket.io svelte vite sveltekit
我已经使用 svelte 和 sapper 编写了一些应用程序,并且想尝试一下 sveltekit。总而言之,它有效,但我现在遇到了在服务器上注册工作人员的问题。
基本上我试图将 socket.io 添加到我的应用程序中,因为我希望能够从服务器发送和接收数据。对于 sapper,这并不是真正的问题,因为您有server.js可以将 socket.io 连接到 polka/express 服务器的文件。但我在 sveltekit 和 vite 中找不到任何等效项。
我进行了一些实验,我可以在路由中创建一个新的 socket.io 服务器,但这会导致一堆新问题,例如它位于单独的端口上并导致 cors 问题。
所以我想知道 sveltekit 是否可以实现这一点,以及如何访问底层服务器?
@ sveltejs/adapter-node还构建了express/polka 兼容的中间件,您可以将其build/middelwares.js公开为自定义的/server.cjs:
const {
assetsMiddleware,
prerenderedMiddleware,
kitMiddleware,
} = require("./build/middlewares.js");
...
app.use(assetsMiddleware, prerenderedMiddleware, kitMiddleware);
Run Code Online (Sandbox Code Playgroud)
节点适配器还有一个EntryPoint选项,它允许将自定义服务器捆绑到构建中,但我使用这种方法遇到了问题。
开发期间不使用适配器(也称为npx svelte-kit dev)。
但是使用svelte.config.js你可以将socket.io注入到vite服务器中:
...
kit: {
...
vite: {
plugins: [
{
name: "sveltekit-socket-io",
configureServer(server) {
const io = new Server(server.httpServer);
...
},
},
],
},
},
Run Code Online (Sandbox Code Playgroud)
注意:需要重新启动开发服务器才能应用服务器代码中的更改。
您可以使用entr来自动执行此操作。
您无法连接到 polka/express 服务器,因为根据您选择的适配器,可能不会使用 polka/express 服务器 - 例如,如果您部署到无服务器平台。无服务器的套接字并不那么容易实现,它们的实现取决于提供商。
你提出了一个重要的担忧,但现在恐怕这是不可能的——如果我错了,有人会纠正我。
您仍然可以做的是使用 SvelteKit 编写前端,将其构建为静态/SPA/节点应用程序,然后使用您自己的 polka/express 服务器的构建。不过,您会失去 SvelteKit 提供的快速开发体验,因为您的开发将分为两部分:首先是客户端,然后是服务器。
编辑
您还可以使用数据推送器第三方服务。它们使用起来很简单,但不一定免费。以下是 Vercel 页面上的数据推送服务列表:
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |