Primus.io拦截服务器上的数据

时间:2014-06-08 18:50:48

标签: node.js primus

我在Express 4服务器上使用带有primus-emit的Primus.io。

我试图找到一种方法来挂接发送/接收的每条消息,包括心跳,以便跟踪我的活动用户,以及该应用程序的另一个模块。 (这是使用Redis排序集完成的。)

由于spark.on('data')并没有给我任何东西,因为一切都是通过primus-emit,我正在考虑尝试编写自己的Primus插件或中间件,但我可以'我非常清楚如何从packet(在插件中)或req, res(在中间件代码中)到spark。当我在spark对象上设置accountNumber时,在primus.on('connection')

所以我正在寻找的是服务器端代码,它允许我拦截传递活动火花的任何数据,只是为了能够将spark.accountNumber推送到Redis。

PS。也许我以错误的方式解决这个问题,所以任何提示都会受到赞赏。基本上我系统的另一部分需要了解活跃用户,并且我正在使用Redis。

谢谢!

1 个答案:

答案 0 :(得分:1)

所以我在irc.freenode.net上征求意见,这是我从#primus上的好人那里得到的建议:不需要任何插件/中间件爵士乐。解决问题的最简单方法是附加到内部'incoming::data'事件,如下所示:

primus.on('connection', function(spark) {
    spark.on('incoming::data', function(data) {
         // ... update redis set with 'connected' users here
    });

    // ... run all other code related to the spark as per usual here
});