客户端找不到socket.io.js

时间:2017-02-19 05:49:06

标签: javascript node.js sockets express socket.io

我已阅读有关此主题的所有其他帖子,但我无法找到问题的答案。我有Express服务器在默认端口或5000 (process.env.PORT || 5000)上运行。然后我添加了socket.io但客户端无法找到socket.io.js文件。经过一些测试后,我认为某些端口冲突存在问题。这是我的服务器端代码:

var express = require('express'),
    app = express(),
    bodyParser = require('body-parser'),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

    app.set('port', (process.env.PORT || 5000));

编辑:客户端内容:enter image description here

编辑2:此外,我认为这不重要,但我正在Heroku本地测试。

编辑3:目录结构:

--api
--images
--node_modules
--scripts
--pages
    main_page.ejs
--styles
composer
index.js 
npm-debug
package

编辑4:凹凸

1 个答案:

答案 0 :(得分:2)

问题

Socket.IO无法拦截加载socket.io.js的/socket.io/请求。这意味着永远不会加载虚拟socket.io.js文件,并且您得到上述404错误。

解决方案

更改此内容:

app.set('port', (process.env.PORT || 5000));
app.listen(app.get('port', function() { ... });

对此:

app.set('port', (process.env.PORT || 5000));
server.listen(app.get('port'), function() { ... });

这可以防止Express立即拦截/socket.io/的请求,并允许加载文件。