我已经写了一些应用程序使用svelte和sapper,并认为我会给sveltekit一次尝试。总之,它可以工作,但我现在遇到了在服务器上注册一个工作人员的问题。
基本上,我试图将socket.io添加到我的应用程序中,因为我希望能够从服务器发送和接收数据。对于皂苷,这并不是一个真正的问题,因为您有一个server.js文件,您可以在这里将socket.io连接到polka/express服务器。但我在sveltekit和vite中找不到类似的东西。
我做了一些实验,我可以在一个路由中创建一个新的socket.io服务器,但是这会导致一系列新的问题,比如它在一个单独的端口上,并导致cors问题。
因此,我想知道sveltekit是否可能这样做,您如何访问底层服务器?
发布于 2021-05-20 08:12:06
您无法连接到polka/express服务器,因为根据您选择的适配器,不可能使用polka/express服务器--例如,如果您部署到无服务器平台上。用于无服务器的套接字不是那么容易实现,它们的实现取决于提供者。
你提出了一个重要的问题,但现在恐怕这是不可能的--如果我错了,有人会纠正我。
您仍然可以使用SvelteKit编写您的前端,将其构建为一个静态/SPA/节点应用程序,然后使用您自己的polka/express服务器构建。但是,您将失去SvelteKit提供的快速开发经验,因为您的开发将分为两个部分:首先是客户端,然后是服务器。
编辑
您也可以使用数据推送第三服务。它们可以直接使用,但不一定是免费的。下面是Vercel页面中的数据推送服务列表:
发布于 2021-09-19 13:57:52
@sveltejs/适配器-节点还构建了与表达式/波尔卡兼容的中间件,它以build/middelwares.js的形式公开,可以导入到自定义的/server.cjs中。
const {
assetsMiddleware,
prerenderedMiddleware,
kitMiddleware,
} = require("./build/middlewares.js");
...
app.use(assetsMiddleware, prerenderedMiddleware, kitMiddleware);节点适配器也有一个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);
...
},
},
],
},
},注意:需要重新启动开发服务器,以应用服务器代码中的更改。
您可以使用安特尔将其自动化。
https://stackoverflow.com/questions/67407879
复制相似问题