不能通过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', {});
- 节点js – 如何用Mongoose填充多个“select”控件
- socketIO-client – RuntimeError:超过最大recursion深度
- 使用粉笔NPM模块的terminal造型(控制字符)
- 如何检查实际内容长度与Content-Length标题?
- 没有为nodeJS转译的babel定义regeneratorRuntime
- 在模块中使用npm3无法获取父节点模块
- Javascript等待一个函数的结束,包括来自node.js的asynchronousMYSQL查询?
- Knex:错误池2 – 错误:错误分配资源:连接ECONNREFUSED
- 在生产中从压缩文件加载所有NodeJS node_modules