这是我的 app.js 的以下代码:
var port = process.env.PORT || 3000;
var app = require('express').createServer();
var io = require('socket.io').listen(app);
app.listen(port);
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
var spaces = {};
app.get('/', function (req, res) {
res.sendfile(__dirname + '/view.html');
});
app.get('/img/rocket.svg', function (req, res) {
res.sendfile(__dirname + '/img/rocket.svg');
});
app.get('/:spaceid', function (req, res) {
res.sendfile(__dirname + '/control.html');
});
io.sockets.on('connection', function (socket) {
socket.on('serve', function(data) {
spaces[data.spaceId] = socket;
});
socket.on('control', function (data) {
var spaceSocket = spaces[data.spaceId];
if (spaceSocket) {
spaceSocket.emit('control', data);
}
});
});
这就是我做的时候得到的heroku logs
2013-05-17T18:18:06.873629+00:00 heroku[web.1]: Starting process with command `node app.js`
2013-05-17T18:18:07+00:00 app[web.1]: Warning: express.createServer() is deprecated, express
2013-05-17T18:18:08+00:00 app[web.1]: applications no longer inherit from http.Server,
2013-05-17T18:18:08+00:00 app[web.1]: please use:
2013-05-17T18:18:08+00:00 app[web.1]:
2013-05-17T18:18:08+00:00 app[web.1]: var express = require("express");
2013-05-17T18:18:08+00:00 app[web.1]: var app = express();
2013-05-17T18:18:08+00:00 app[web.1]:
2013-05-17T18:18:09+00:00 app[web.1]: Socket.IO's `listen()` method expects an `http.Server` instance
2013-05-17T18:18:09+00:00 app[web.1]: as its first parameter. Are you migrating from Express 2.x to 3.x?
2013-05-17T18:18:08.076300+00:00 heroku[web.1]: State changed from starting to up
2013-05-17T18:18:09+00:00 app[web.1]: If so, check out the "Socket.IO compatibility" section at:
2013-05-17T18:18:09+00:00 app[web.1]: https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
2013-05-17T18:18:09+00:00 app[web.1]: info: socket.io started
2013-05-17T18:18:09.745293+00:00 heroku[router]: at=error code=H18 desc="Request Interrupted" method=GET path=/ host=myapp123.herokuapp.com fwd="80.47.193.237" dyno=web.1 connect=1ms service=0ms status=503 bytes=0 sock=client
2013-05-17T18:18:11.428152+00:00 heroku[router]: at=error code=H18 desc="Request Interrupted" method=GET path=/ host=myapp123.herokuapp.com fwd="80.47.193.237" dyno=web.1 connect=1ms service=0ms status=503 bytes=0 sock=client
我研究过不能使用 WebSockets 并且必须以不同的方式配置它。我不确定我是否正确。任何人都可以发现代码中的任何错误吗?请记住,我现在正在学习这些东西。