当前位置: 首页 > 面试题库 >

如何解决Socket.io 404(未找到)错误?

印劲
2023-03-14
问题内容

我在Express中使用Socket.io。在我的项目中,我有一个登录页面和一个主页。成功登录后,我导航到localhost:3000 /
home,收到此错误:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=1418187395022-0 404 (Not Found)

我没有对我app.js(通过express创建的项目)进行任何修改。

index.js:

var express = require('express');
var router = express.Router();
var http = require('http');
var fs = require('fs');
var io = require('socket.io')(http);
/* GET home page. */
router.get('/', function(req, res) {
  res.render('index', { title: 'Express' });
});

router.get('/home', function(req, res) {
  res.render('home', { title: 'Express' });
});

io.on('connection', function(socket){
    console.log("User Connected");
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
    console.log("Message");
  });
   socket.on('disconnect', function(msg){
    console.log("User DisConnected");
  });

});

router.post('/authenticate', function(req, res) {
    fs.readFile("./public/Verification/Users.json", "utf8", function (err, data) {
        if (err) 
            console.log(err);
        else{
            var result = JSON.parse(data);
            for(var i=0;i<result.Users.length;i++){
                if(req.body.username == result.Users[i].username && req.body.password ==     result.Users[i].password){
                    console.log("Success!!!!!!!!!!!!!!");
                    res.location("home");
                    res.redirect("home");
                }
            }
        }
        });
});

module.exports = router;

在我layout.jade这样定义Socket.io中:

script(src='https://cdn.socket.io/socket.io-1.2.0.js')

问题答案:

如果您运行的是Express 4,在我看来,您似乎缺少代码行:

var app = express();
var server = app.listen(3000);

这将启动您的Web服务器并将其设置为端口3000。请在此处查看基本的Express
4应用程序:http :
//expressjs.com/4x/api.html

然后,要启动socket.io,您需要添加:

var io = require('socket.io').listen(server);

并且,不需要此行:

var http = require('http');


 类似资料:
  • 问题内容: 我正在做一个教程,并收到此错误: 致命错误:在第8行上找不到类“ MySQLi”(LONG URL) 第8行的代码是: 我在网上看到有人说要在我的phpinfo()中将其打开,但是“ mysqli”下面没有列出任何内容。 另外,我正在运行PHP版本5.2.5 问题答案: 听起来您只需要安装MySQLi即可。 如果您认为自己已完成此操作,但仍然遇到问题,请发布您的操作系统以及可能有助于进

  • 在尝试返回OrderStatus类的对象时面临此问题。 造成这种情况的主要原因是媒体类型,当我使用application/json进行尝试时,它起了作用,但需要使用自定义媒体类型,如:application/vnd.xyzcompany.v1+json 额外信息:@produces和@consumes用于相同的媒体类型,并且在请求的响应中定义了OrderStatus类。

  • 我已经在我的CentOs中安装了协议2.5.0, 当我执行命令proc--version时,它会产生 LIBProc 2.5.0 作为输出。 但一旦我从git中提取代码,当我尝试使用Maven3编译它时,proto模块抛出错误,说, Prococ失败错误: /bin/sh: Prococ:命令未找到 我参考了许多博客,也尝试改变我的bashrc路径如下, 导出JAVA_HOME=/opt/java

  • 升级自制软件时遇到错误 DYLD:库未加载: /usr/local/opt/openldap/lib/libldap-2.4.2.dylib引用自: /usr/local/bin/php原因:未找到图像中止陷阱:6

  • 问题内容: 从GitHub提取模块并按照说明进行构建后,我尝试使用以下方法将其拖入现有项目: 这似乎可以解决问题: 但是Node.js找不到模块: 我真的很想了解这里发生的事情,但是对于接下来的去向我有些茫然。有什么建议? 问题答案: 使用仅将模块安装到当前目录中(在名为的子目录中)。app.js位于下面吗?如果不是,并且您想从任何目录使用该模块,则需要使用进行全局安装。 我通常在本地安装大多数软