客户端无法findsocket.io.js
我已经阅读了关于这个主题的所有其他post,但我找不到我的问题的答案。 我有Express服务器运行在默认端口或5000 (process.env.PORT || 5000)
。 然后我添加了socket.io但客户端无法findsocket.io.js文件。 经过一些testing后,我认为有一些端口冲突问题。 这是我的服务器端代码:
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));
编辑:客户端的东西:
编辑2:另外,我不认为这是重要的,但我在Heroku本地进行testing。
编辑3:目录结构:
--api --images --node_modules --scripts --pages main_page.ejs --styles composer index.js npm-debug package
编辑4:凹凸
问题
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/
的请求,并允许加载文件。