如何使用express server将socket.io连接到Sapper应用程序? 问题
我正在尝试使用express和webpack在Sapper应用程序上启动并运行socket.io。我已经正确地服务了站点,没有错误,但是当我试图通过socket.io连接前端时,它只抛出404 我认为我遇到的问题是socket.io需要拦截/socket.io请求(),但Sapper似乎不允许这样做。据我所知,我们可以在应用sapper中间件之前注册路由,但socket.io不是中间件 我已经用我的设置副本创建了一个公共回购 我可以在chrome的“网络”选项卡中看到正在发出请求(大约每秒一次),但响应是默认的_error.svelte 404页面:如何使用express server将socket.io连接到Sapper应用程序? 问题,express,socket.io,sapper,Express,Socket.io,Sapper,我正在尝试使用express和webpack在Sapper应用程序上启动并运行socket.io。我已经正确地服务了站点,没有错误,但是当我试图通过socket.io连接前端时,它只抛出404 我认为我遇到的问题是socket.io需要拦截/socket.io请求(),但Sapper似乎不允许这样做。据我所知,我们可以在应用sapper中间件之前注册路由,但socket.io不是中间件 我已经用我的设置副本创建了一个公共回购 我可以在chrome的“网络”选项卡中看到正在发出请求(大约每秒一次)
main.svelte-1uhnsl8{位置:相对;最大宽度:56em;背景色:白色;填充:2em;边距:0自动;框大小:边框框}
nav.svelte-1dbd5up{边框底部:1px实心rgba(255,62,0,0.1);字体重量:300;填充:0 1em}ul.svelte-1dbd5up{边距:0;填充:0}ul svelte-1dbd5up::after{内容:'';显示:块;清除:两个}li.svelte-1dbd5up{显示:块;浮动:左}[aria当前]。svelte-1dbd5up位置:相对;显示:内联块}[aria当前].svelte-1dbd5up::after{位置:绝对;内容:'';宽度:计算器(100%-1em);高度:2px;背景色:rgb(255,62,0);显示:块;底部:-1px}a.svelte-1dbd5up{文本装饰:无;填充:1em 0.5em;显示:块}
h1.svelte-8od9u6,p.svelte-8od9u6{margin:0 auto}h1.svelte-8od9u6{font size:2.8em;font-weight:700;margin:0.5em 0}p.svelte-8od9u6{margin:1em auto}@media(最小宽度:480px){h1.svelte-8od9u6{font-size:4em}
404
404
未找到
__SAPPER_uz={错误:{消息:“未找到”},状态:404,baseUrl:,预加载:[void 0,{}]};如果(导航器中的“serviceWorker”)navigator.serviceWorker.register('/service worker.js');
代码
My server.js:
从“express”导入express
从“http”导入http
从“sirv”导入sirv
从“压缩”导入压缩
从'@sapper/server'导入*作为sapper;
从“socket.io客户端”导入socketIO
const app=express()
const server=http.createServer(应用程序)
常量io=socketIO(服务器)
const{PORT,NODE_ENV}=process.ENV;
const dev=NODE_ENV==“开发”;
io.on('连接',(套接字)=>{
console.log('已连接')
})
应用程序
.使用(
压缩({阈值:0}),
sirv('static',{dev}),
sapper.middleware()
)
侦听(端口,错误=>{
if(err)console.log('error',err);
});
My_layout.svelte脚本:
从“socket.io客户端”导入io
从“../components/Nav.svelte”导入导航;
常量套接字=io()
出口部分;
我正在使用for Sapperserver.js
import sirv from 'sirv';
import compression from 'compression';
import * as sapper from '@sapper/server';
import socketIo from 'socket.io';
import express from 'express';
const { PORT, NODE_ENV } = process.env;
const dev = NODE_ENV === 'development';
const app = express();
const server = app
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.listen(PORT, err => {
if (err) console.log('error', err);
});
const io = socketIo(server);
io.on('connection', function(socket) {
console.log('connected')
});
server.js
import sirv from 'sirv';
import compression from 'compression';
import * as sapper from '@sapper/server';
import socketIo from 'socket.io';
import express from 'express';
const { PORT, NODE_ENV } = process.env;
const dev = NODE_ENV === 'development';
const app = express();
const server = app
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.listen(PORT, err => {
if (err) console.log('error', err);
});
const io = socketIo(server);
io.on('connection', function(socket) {
console.log('connected')
});