不能通过socket.io发出?

我最近更新了socket.io到0.9.8的最新版本

上次我使用这个应用程序的时候,我做了这样的事情:

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', {}); 

它只是不起作用,相同的错误,不同的路线。

我究竟做错了什么?

您需要保存socketio.listen的返回值并与之交互。 我build议你按照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', {});