首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS EventEmitter

NodeJS EventEmitter
EN

Stack Overflow用户
提问于 2015-03-29 17:50:45
回答 1查看 1.1K关注 0票数 0

我使用的是模块化设置,其中Socket.IO不是我的应用程序或路由的一部分,而是在一个外部模块中。

我有一个PHP脚本,它接收数据,然后更新数据库。我将其设置为向节点应用程序发送cURL请求,并且我希望该路由触发我的套接字模块侦听的事件,并发出socket.io事件,并实时更新客户端看到的内容。

是一个事件发出到整个应用程序,还是我的方法完全错误了?

谢谢。

特快3号路线

代码语言:javascript
复制
var events              = require('events');
var event_emitter       = new events.EventEmitter();

router.post('/php-script-calls-this', function(req, res, next) {
    event_emitter.emit('do-socket-event');
    res.sendStatus(200);
});

套接字文件(在我的io.js模块中调用子模块)

代码语言:javascript
复制
module.exports = function(io, socket) {

    var events              = require('events');
    var event_emitter       = new events.EventEmitter();

    event_emitter.on("do-socket-event", function() {
      socket.emit("update-client-data");
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-29 18:07:52

我认为问题是,你有两个单独的事件发射器。在这两个模块中,您都要创建一个EventEmitter实例。有什么特别的原因不能仅仅使用‘/php-脚本-调用-这个’路由的套接字并从那里发出?

代码语言:javascript
复制
var events              = require('events');
var event_emitter       = new events.EventEmitter();

router.post('/php-script-calls-this', function(req, res, next) {
    socket.emit('update-client-date');
    res.sendStatus(200);
});

如果不能从路由直接发送到套接字,那么就在模块中创建EventEmitter,以便共享它。

my-shared-event-emitter.js

代码语言:javascript
复制
var events = require('events');
module.exports = new events.EventEmitter();

然后在您的路由文件中:

代码语言:javascript
复制
var events              = require('events');
var event_emitter       = require('my-shared-event-emitter');

router.post('/php-script-calls-this', function(req, res, next) {
    event_emitter.emit('do-socket-event');
    res.sendStatus(200);
});

最后,套接字文件:

代码语言:javascript
复制
module.exports = function(io, socket) {

    var events              = require('events');
    var event_emitter       = require('my-shared-event-emitter');

    event_emitter.on("do-socket-event", function() {
      socket.emit("update-client-data");
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29332645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档