【问题标题】:socket.io is not found with Express 4?在 Express 4 中找不到 socket.io?
【发布时间】:2016-03-21 06:10:35
【问题描述】:

我一直在尝试让我的客户端与我的服务器连接,但 chrome 总是打印那个

GET http://localhost:30653/socket.io/socket.io.js 404(未找到)

不知道哪里出了问题……

express 版本是“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");
    });
});

欢迎任何帮助!我将不胜感激!

【问题讨论】:

    标签: node.js socket.io express-4


    【解决方案1】:

    我认为您的app.listen(...) 需要为server.listen(...),因为您创建服务器的方式如下所示:http://socket.io/docs/#using-with-express-3/4。你这样做的方式,socket.io 没有连接到正确的服务器,因此没有为你提供 socket.io.js 文件。

    您可以执行app.listen(),但前提是您在此处遵循不同的初始化过程:http://socket.io/docs/#using-with-the-express-framework

    【讨论】:

    • 太棒了!我用 server.listen() 替换了 app.listen(),因此客户端找到了 socket.io/socket.io.js。我做到了。非常感谢!
    【解决方案2】:

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

      app.use("/lib", express.static(path.join(__dirname,'node_modules'))); 
    

    然后按如下方式导入您的客户端

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

    【讨论】:

    • socket.io 会自动为/socket.io/socket.io.js 安装路由,因此不需要。
    猜你喜欢
    • 2014-06-04
    • 2012-05-22
    • 2015-02-28
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2014-10-20
    • 2015-05-25
    • 2014-07-22
    相关资源
    最近更新 更多