【问题标题】:Socket.IO won't connect - /socket.io/ 404's?Socket.IO 无法连接 - /socket.io/ 404 的?
【发布时间】:2015-08-13 05:06:55
【问题描述】:

我有一个带有 express 4 的小型 http 服务器,在此之上我需要添加一个小型实时组件,为此我选择了 Socket.IO。我按照他们的指示到达了这个代码:

var https = require("https"),
fs = require("fs"),
express = require('express'),
app = express();

var options = {
  key: fs.readFileSync('redacted.key'),
  cert: fs.readFileSync('redacted.crt'),
  ca: [ 
    fs.readFileSync('g1.crt'),
    fs.readFileSync('g2.crt'),
    fs.readFileSync('g3.crt')
  ]
};

var server = https.createServer(options, app);
var io = require('socket.io')(server);

server.listen(30572);
io.listen(30572);

io.on('connection', function(socket) {
  console.log('SocketIO connection received');
});

app.use(function(request, response, next) {
  if (!request.secure) {
    return response.redirect(['https://', request.get('Host'), request.url].join(''));
  }

  next();
});

app.use(express.static('.'));

console.log('Listening on 30572... Ctrl + C to quit');

还有这个客户端代码:

var socket = io.connect(location.origin)

从那时起,我就注意到此消息向控制台发送了垃圾邮件:

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

我已将 use 块注释掉,但无济于事。

是不是我做错了什么?

编辑:删除 SSL 没有任何区别。

【问题讨论】:

  • 我认为您不需要行 io.listen(30572); 也不需要设置静态文件夹的行,我认为它不应该是 dot(. ) 可能会导致问题
  • express.static('.') 可以很好地服务于当前的工作目录树。会不会弄乱 SocketIO?编辑:将其换成 app.use(express.static(__dirname)); - 没有骰子。
  • 但是服务 ('.') 存在安全风险,因为您可以访问 server.js 以及所有与节点相关的文件、插件等。我建议将您的静态文件放在一个文件夹中。第一行也不应该是 http 而不是 https 这里是 simple example
  • 没想到。谢谢你告诉我。另外,请忽略这个问题。我使用的是 gulp 服务器而不是我自己的简单服务器,当然它不会工作。 ://
  • 很高兴能帮上忙

标签: node.js express socket.io


【解决方案1】:

忽略这个问题。这是我使用 gulp livereload 服务器而不是我自己的服务器的问题。现在可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2013-03-05
    • 2013-08-15
    相关资源
    最近更新 更多