我在Express 4服务器上将Primus.io与primus-emit一起使用。
我正在尝试找到一种方法,以将该应用程序的另一个模块挂接到发送/接收的每条消息(包括心跳)中,以便跟踪我的活动用户。 (这是使用Redis排序集完成的)。
由于spark.on('data')
没有给我任何东西,因为一切都在通过primus-emit进行,所以我在考虑尝试为此编写自己的Primus插件或中间件,但是我不太想知道如何从packet
(在插件中)或req, res
(在中间件代码中)到spark
。当我在primus.on('connection')
中的spark对象上设置accountNumber时。
因此,我要寻找的是服务器端代码,这将使我能够拦截通过主动火花传递的任何数据,只是能够将spark.accountNumber
推送到Redis。
PS。也许我会以错误的方式进行操作,因此任何提示都值得赞赏。本质上,我系统的另一部分需要了解活动用户,因此我正在使用Redis。
谢谢!!
最佳答案
因此,我在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
});