Javascript socket.io无法与静态文件路由节点.js一起使用

Javascript socket.io无法与静态文件路由节点.js一起使用,javascript,node.js,sockets,express,Javascript,Node.js,Sockets,Express,我正在写一个聊天应用程序。在这种情况下,当静态文件路由工作时,socket.io(Chat)不工作会在控制台中抛出not found错误 404找不到 当聊天正常时,公共静态文件不工作会抛出错误 无法获取/public/index.html 代码聊天正在工作(公共静态文件不工作): var app=require('express')(); var http=require('http').Server(app); var io=require('socket.io')(http); var p

我正在写一个聊天应用程序。在这种情况下,当静态文件路由工作时,socket.io(Chat)不工作会在控制台中抛出not found错误

404找不到

当聊天正常时,公共静态文件不工作会抛出错误

无法获取/public/index.html

代码聊天正在工作(公共静态文件不工作):

var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var path=require('path');

//Initialize application with route
app.get('/',function (req,res) {
 var express=require('express');
 app.use(express.static(path.join(__dirname+'/public')));
 res.sendFile(path.join(__dirname,'../public','chat.html'));
});

//Register events on socket connection
io.on('connection',function (socket) {
   socket.on('chatMessage',function (from, msg) {
    io.emit('chatMessage',from,msg);
 });

 socket.on('notifyUser',function (user) {
    io.emit('notifyUser',user);
  });
});

// Listen appliaction request on port 80
http.listen(80,function () {
   console.log('Server Running in port 80');
});
var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var path=require('path');

//Initialize application with route
var express=require('express');
app.use(express.static('public/'));
app.use('/public',express.static('public/stack'));


//Register events on socket connection
io.on('connection',function (socket) {
    socket.on('chatMessage',function (from, msg) {
        io.emit('chatMessage',from,msg);
    });
    socket.on('notifyUser',function (user) {
        io.emit('notifyUser',user);
    });
});


app.get('*', function(req, res){
    res.send('what???', 404);
});

// Listen appliaction request on port 80
app.listen(80,function () {
    console.log('Server Running in port 80');
}
代码公共静态文件工作(聊天室不工作):

var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var path=require('path');

//Initialize application with route
app.get('/',function (req,res) {
 var express=require('express');
 app.use(express.static(path.join(__dirname+'/public')));
 res.sendFile(path.join(__dirname,'../public','chat.html'));
});

//Register events on socket connection
io.on('connection',function (socket) {
   socket.on('chatMessage',function (from, msg) {
    io.emit('chatMessage',from,msg);
 });

 socket.on('notifyUser',function (user) {
    io.emit('notifyUser',user);
  });
});

// Listen appliaction request on port 80
http.listen(80,function () {
   console.log('Server Running in port 80');
});
var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var path=require('path');

//Initialize application with route
var express=require('express');
app.use(express.static('public/'));
app.use('/public',express.static('public/stack'));


//Register events on socket connection
io.on('connection',function (socket) {
    socket.on('chatMessage',function (from, msg) {
        io.emit('chatMessage',from,msg);
    });
    socket.on('notifyUser',function (user) {
        io.emit('notifyUser',user);
    });
});


app.get('*', function(req, res){
    res.send('what???', 404);
});

// Listen appliaction request on port 80
app.listen(80,function () {
    console.log('Server Running in port 80');
}
好的,这个代码有效

var express=require('express');
var app = express();
var path=require('path');
var server = require('http').createServer(app);
var io=require('socket.io')(server);
//Initialize application with route
app.use(express.static('public/'));
// app.use('/public',express.static('public/stack'));

//Register events on socket connection
io.on('connection',function (socket) {
    socket.on('chatMessage',function (from, msg) {
        io.emit('chatMessage',from,msg);
    });
    socket.on('notifyUser',function (user) {
        io.emit('notifyUser',user);
    });
});

app.get('/', function(req, res){
    res.send('what???', 404);
});

// Listen appliaction request on port 80
server.listen(80,function () {
    console.log('Server Running in port 80');
});
将您的
chat.html
移动到侧公共文件夹中,然后像

目录结构类似于

appdir
public/client.html
server.js

node server.js

我无法重现错误。我的端口80正忙着使用nginx,所以我将它设置为8000,聊天也可以使用statichttp://localhost/socket.io/?EIO=3&transport=polling&t=1486743833778-61 404(未找到)no它不工作
404
是因为您的通配符路由
app.get('*',…res.send('what?',404)
我甚至对该路由进行了评论。不起作用。在网络面板中,它给出了
无法获取/socket.io/?EIO=3&transport=polling&t=1486744187480-26
@SasiVarunan相同的错误。它工作得很好。我想知道如何使用socket函数而不是server.js文件。因为我想将这些msg存储到数据库中。如果我写这些函数ns这里的server.js文件看起来很凌乱。然后你需要在单独的js文件中编写所有函数并进行导出。然后在server.js文件中你需要它。它值得阅读和理解
exports和module.exports
并深入到你的项目中