Node.js 在Express 4中找不到socket.io?

Node.js 在Express 4中找不到socket.io?,node.js,socket.io,express-4,Node.js,Socket.io,Express 4,我一直试图让我的客户端连接到我的服务器,但chrome总是打印出来 获取404(未找到) 我不知道哪里出了问题 快速版本为“4.13.4”,socket.io版本为“1.4.5” 这是我的代码: app.js var express = require('express'); var hbs = require('hbs'); var app=express(); var server = require('http').createServer(app); var io = require('

我一直试图让我的客户端连接到我的服务器,但chrome总是打印出来

获取404(未找到)

我不知道哪里出了问题

快速版本为“4.13.4”,socket.io版本为“1.4.5”

这是我的代码:

app.js

var express = require('express');
var hbs = require('hbs');
var app=express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);

io.on('connection',function(socket){
    console.log("connected");
    socket.emit('open');
});

app.set('port', process.env.PORT || 30653);
app.set('view engine','html');
app.engine('html',hbs.__express);
app.use(express.static('public'));
app.get('/',function(req,res){
    res.render('chatroom');
});
app.listen(app.get('port'),function(){
    console.log('this server is listening on port:'+app.get('port'));
});
客户:

$(function(){
    var socket = io.connect('http://localhost:30653');
    socket.on('open',function(){
        console.log("open")
    });
    socket.on('system',function(json){
        console.log("system");
    });
});

欢迎任何帮助!我会非常感激的

我认为您的
应用程序.listen(…)
需要是
服务器。listen(…)
因为您创建服务器的方式如下所示:。按照您的方式,socket.io没有连接到正确的服务器,因此没有为您提供socket.io.js文件


您可以执行
app.listen()
,但前提是您在此处遵循不同的初始化过程:

我认为您的
app.listen(…)
需要是
server.listen(…)
,因为您创建服务器的方式如下所示:。按照您的方式,socket.io没有连接到正确的服务器,因此没有为您提供socket.io.js文件


您可以执行
app.listen()
,但前提是您在此处遵循不同的初始化过程:

您需要在app.js中app.use(express.static('public')一行之后使用下面一行代码

然后导入到您的客户端,如下所示

   <script src='/lib/socket.io/socket.io.js' type='text/javascript'></script>

您需要在app.use(express.static('public')之后使用app.js中下面的代码行

然后导入到您的客户端,如下所示

   <script src='/lib/socket.io/socket.io.js' type='text/javascript'></script>


太棒了!我将app.listen()替换为server.listen(),这样客户端就可以找到socket.io/socket.io.js。我成功了。非常感谢你!伟大的我将app.listen()替换为server.listen(),这样客户端就可以找到socket.io/socket.io.js。我成功了。非常感谢你!socket.io自动为
/socket.io/socket.io.js安装路由,因此不需要此路由。socket.io自动为
/socket.io/socket.io.js安装路由,因此不需要此路由。