使用Express框架的Node.js中的自定义事件
所以,我想知道如何在node.js中创build自定义事件,而且我打了一堵墙。 我很确定我误解了关于expression式的工作原理以及node.js事件如何工作。
https://creativespace.nodejitsu.com这就是应用程序。
当用户创build一个新的“活动”(会发生很多次的事情),他们发送一个POST请求。 然后在我的路线,如果这个POST成功,我想发出一个事件,告诉socket.io为该活动创build一个新的命名空间。
在我的路线文件中:
var eventEmitter = require('events').EventEmitter; // Tell socket.io about the new space. eventEmitter.emit('new activity', {activityId: body.id});
和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 }); });
所以我得到的错误是无法打电话方法的未定义,它指的是在上面的socket.io第2行。 我想我搞乱了我的要求,也许…或者我不太了解事件是如何工作的。
任何帮助,甚至参考良好的阅读Node.js事件将摇滚!
谢谢!!!
你应该把EventEmitter当成一个你可以inheritance的类。 尝试这个:
function MyEmitter () { events.EventEmitter.call(this); } util.inherits(MyEmitter, events.EventEmitter);
现在你可以使用你的课堂来聆听和发出事件:
var e = new MyEmitter; e.on("test", function (m) { console.log(m); }); e.emit("test", "Hello World!");
如果使用快递,您也可以直接从EventEmitterinheritance的快递“应用程序”上收听活动。 例如:
res.app.on("myEvent", function)
并发射到它像
res.app.emit("myEvent", data)