Cos*_*sta 14 node.js express socket.io
所以,我想知道如何在node.js中创建自定义事件,而且我正在碰壁.我很确定我误解了一些关于express如何工作以及node.js事件如何工作的东西.
https://creativespace.nodejitsu.com那是应用程序.
当用户创建新的"活动"(会发生多次)时,他们会发送POST请求.然后在我的路由中,如果POST成功,我想发出一个事件,告诉socket.io为该活动创建一个新的命名空间.
在我的路线文件中:
var eventEmitter = require('events').EventEmitter;
// Tell socket.io about the new space.
eventEmitter.emit('new activity', {activityId: body.id});
Run Code Online (Sandbox Code Playgroud)
和socket.io:
// When someone creates a new activity
eventEmitter.on('new activity', function (data) { // this gives and error
var newActivity = '/activity?' + data.activityId;
io.of(newActivity).on('connection', function (socket) {
// Socket.io code for an activity
});
});
Run Code Online (Sandbox Code Playgroud)
所以我得到的错误是无法调用UNDEFINED的方法,它指的是上面socket.io中的第2行.我想我搞砸了我的要求,也许......或者我不太了解事件的运作方式.
任何帮助,甚至是对Node.js事件的良好阅读的参考都会摇滚!
谢谢!!!
Jay*_*Jay 22
如果使用express,你也可以在ExpressEmitter继承的express'app'上监听事件.例如:
res.app.on("myEvent", function)
Run Code Online (Sandbox Code Playgroud)
并向它发出像
res.app.emit("myEvent", data)
Run Code Online (Sandbox Code Playgroud)
Tod*_*ell 11
您应该将EventEmitter视为可以继承的类.试试这个:
function MyEmitter () {
events.EventEmitter.call(this);
}
util.inherits(MyEmitter, events.EventEmitter);
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用您的类来侦听和发出事件:
var e = new MyEmitter;
e.on("test", function (m) { console.log(m); });
e.emit("test", "Hello World!");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8599 次 |
| 最近记录: |