2012-07-25 46 views
1

我最近更新socket.io到这是0.9.8不能通过socket.io发出?

我最后一次与应用工作最新版本,我做了这样的事情:

io.sockets.emit("logged",this); 

和它的工作。现在,我得到:

TypeError: Cannot call method 'emit' of undefined 
    at new Agent (/var/www/panel/models/agent.js:29:16) 
    at module.exports (/var/www/panel/modules/app.js:35:47) 
    at Query.Client.query (/var/www/panel/node_modules/mysql/lib/client.js:108:11) 
    at Query.EventEmitter.emit (events.js:85:17) 
    at Query._handlePacket (/var/www/panel/node_modules/mysql/lib/query.js:51:14) 
    at Client._handlePacket (/var/www/panel/node_modules/mysql/lib/client.js:319:14) 
    at Parser.EventEmitter.emit (events.js:88:17) 
    at Parser.write.emitPacket (/var/www/panel/node_modules/mysql/lib/parser.js:71:14) 
    at Parser.write (/var/www/panel/node_modules/mysql/lib/parser.js:576:7) 
    at Socket.EventEmitter.emit (events.js:88:17) 

我认为这是因为一些有关范围或什么的,所以我只是这样做:

// server.js 
var express = require('express'), 
    server = express(), 
    Routes = require('./routes'), 
    App = require('./modules/app.js'), 
    database = require('./libraries/mysql.js'), 
    io = require('socket.io'), 
    mysql = require('mysql'); 


server.listen(8080); 
io.listen(server); 
io.sockets.emit('Hi there', {}); 

它只是不工作,同样的错误,不同的线路。

我在做什么错?

回答

4

您需要保存socketio.listen的返回值并与其交互。我建议你按照socket.io的例子。这样的事情应该做的伎俩:

var express = require('express'), 
    server = express(), 
    socketio = require('socket.io'); 

server.listen(8080); 
var io = socketio.listen(server); 
io.sockets.emit('Hi there', {}); 

甚至:

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

server.listen(8080); 
io.sockets.emit('Hi there', {}); 
+0

谢谢您的回答。我现在感觉很愚蠢......但是我必须添加这个:'socketio = require('socket.io'),io = socketio.listen(server.listen(8080));'因为最新版本表现。 – 2012-07-25 12:47:48