带有nodejs的socket.io找不到必需的js文件

时间:2012-01-11 10:26:07

标签: node.js socket.io

我将我的应用部署到了no.de.我对socket.io的第一个问题是我必须改变它正在收听的端口。

  io = require('socket.io').listen(3000),

现在更改端口后,无法找到脚本所需的socket.io.js

 script(src="/socket.io/socket.io.js")

我尝试了在端口中提供绝对路径,但这不起作用。 在localhost上工作得很好,所以我真的很困惑如何解决这个问题。

 GET http://twtups.no.de/socket.io/socket.io.js 404 (Not Found)
 Uncaught ReferenceError: io is not defined

再次查看我的日志会显示这个//这是来自快递我认为,dunno如果相关

 Warning: connection.session() MemoryStore is not
 designed for a production environment, as it will leak
 memory, and obviously only work within a single process.
[ Jan 11 11:10:09 Method "start" exited with status 0. ]

更新,像这样工作

var app = express.createServer();
var io = require('socket.io').listen(app);
app.listen(80);

2 个答案:

答案 0 :(得分:1)

您使用的是什么快速版

API已从Express 2.x更改为3.x,因此答案在Migrating from 2.x to 3.x wiki的 Socket.IO兼容性部分:

Socket.IO的.listen()方法将http.Server实例作为参数。
从3.x 开始,express()的返回值不是http.Server个实例。要使Socket.IO与Express 3.x一起使用,请确保手动创建http.Server实例并将其传递给Socket.IO的.listen()方法:

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

server.listen(3000);

答案 1 :(得分:0)

我不确定发生了什么(它应该可以工作),但你总是可以尝试将socket.io.js放在主站点的某个地方。

实际上,端口的更改仅对WebSocket服务器有用。导入/socket.io/socket.io.js时,socket.io网址会自动添加到您的应用中,因此该文件仍会在您的主网站上提供。你所说的似乎很奇怪,可能与no.de有关。我不确定。