我正在尝试学习socket.io以及他们的Express不工作的例子。继承我的代码:
app.js:
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, server = require('http').createServer(app)
, path = require('path')
, io = require('socket.io').listen(app);
var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
server.listen(3000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.jade');
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
和我的index.jade文件:
extends layout
block content
script(src="/node_modules/socket.io/lib/socket.io.js")
script(
var socket = io.connect('http://localhost:3000');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
)
当我访问我的本地主机时,浏览器只是在等待响应。它最终会超时。
与此问题相关的大多数其他问题都有一些奇怪的示例代码实现。我真的只是试图实现它,因为他们表明。
答案 0 :(得分:4)
问题是您在创建app
后正在创建io
。所以这一行
, io = require('socket.io').listen(app);
实际上与
相同 , io = require('socket.io').listen(undefined);
删除此行
var app = express();
在第一行与io = require('socket.io')
之间的某处添加, app = express()