我在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。
谢谢!
答案 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
});