Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用express server将socket.io连接到Sapper应用程序? 问题_Express_Socket.io_Sapper - Fatal编程技术网

如何使用express server将socket.io连接到Sapper应用程序? 问题

如何使用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的“网络”选项卡中看到正在发出请求(大约每秒一次)

我正在尝试使用express和webpack在Sapper应用程序上启动并运行socket.io。我已经正确地服务了站点,没有错误,但是当我试图通过socket.io连接前端时,它只抛出404

我认为我遇到的问题是socket.io需要拦截/socket.io请求(),但Sapper似乎不允许这样做。据我所知,我们可以在应用sapper中间件之前注册路由,但socket.io不是中间件

我已经用我的设置副本创建了一个公共回购

我可以在chrome的“网络”选项卡中看到正在发出请求(大约每秒一次),但响应是默认的_error.svelte 404页面:


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 Sapper

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')
});
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')
});