gpt4 book ai didi

javascript - socket.io & 表达 : 404 not found

转载 作者:搜寻专家 更新时间:2023-11-01 00:29:18 26 4
gpt4 key购买 nike

我的 app.js

const express = require('express'),
morgan = require('morgan'),
bodyParser = require('body-parser'),
path = require('path'),
mongoose = require('mongoose'),
app = express(),
config = require('./config'),
Note = require('./models/note'),
server = require('http').createServer(app),
io = require('socket.io')(server),
socket = io.socket;

mongoose.connect('mongodb://'+config.db.host+'/'+config.db.name);

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Serve static assets
app.use(express.static(path.resolve(__dirname, '..', 'build')));

app.use(function(req, res, next) {
const allowedOrigins = [
'http://127.0.0.1:8000',
'http://localhost:8000',
'http://127.0.0.1:3000',
'http://localhost:3000'];
const origin = req.headers.origin;
if(allowedOrigins.indexOf(origin) > -1){
res.setHeader('Access-Control-Allow-Origin', origin);
}
//res.header("Access-Control-Allow-Origin", "127.0.0.1 localhost");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header('Access-Control-Allow-Credentials', true);
next();
});

在上述代码之后在处理程序中调用 socket.emit()

我的 index.js

'use strict';

const app = require('./app'),
// server = http.createServer(app),
PORT = process.env.PORT || 8000;

app.listen(PORT, () => {
console.log(`REST API running on ${PORT}!`);
});

控制台输出:

enter image description here

有什么想法吗?谢谢

最佳答案

如果你要这样做:

server = require('http').createServer(app),

那么,你不能这样做:

app.listen(PORT, ...);

因为 app.listen() 将创建一个新的不同的服务器,而 socket.io 将不会与该服务器相关联。

相反,您需要:

server.listen(PORT, ...)

使用来自 app.js 的 server 值。而且,如果你想从 app.js 在服务器中 require(),你还需要从 app.js 导出它(我没有看到你的代码在做什么)。


供引用,the code for app.listen() , 这样做:

app.listen = function listen() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};

您可以看到它如何创建与您传递给 socket.io 的服务器不同的服务器。因此,您传递给 socket.io 的那个从未启动,因此 socket.io 不起作用。

关于javascript - socket.io & 表达 : 404 not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com