流星目前活跃的用户?

时间:2012-10-24 03:23:05

标签: javascript meteor

我在流星上做了一个简单的聊天室。我如何获得当前活跃用户的列表?有没有办法真正获得当前连接/客户端的列表?

2 个答案:

答案 0 :(得分:5)

我昨天浏览了流星来源,看看是否已有类似的东西。我找不到连接旗帜或任何东西......

我认为你有两种选择:

  • 在每个连接用户的客户端和服务器中实现心跳。我个人不太喜欢这个想法,因为这可能会导致服务器上运行数十万个间隔

  • 使用 sockjs 服务器获取打开的套接字Meteor.default_server.stream_server.all_sockets()返回一个包含所有打开的套接字的数组。您可以在一个时间间隔内查找更改(或者更好地监听sockjs服务器本身的更改,有一个register方法可能很有用),将打开的套接字映射到您的用户和使用集合将其推送给您的客户。 每个客户端都知道他的套接字ID,因此映射不应该很难。

我还没有实现它,所以这些只是从哪里开始。

答案 1 :(得分:0)

我创建了一个REST端点来暴露当前活动用户的数量...

/server/main.js

import bodyParser from 'body-parser'
import { Picker } from 'meteor/meteorhacks:picker'

Picker.middleware(bodyParser.json())

Picker.route('/api/status', ({ provider }, request, response) => {
  response.statusCode = 200
  response.end(JSON.stringify({
    active_users: Meteor.default_server.stream_server.all_sockets().length
  }))
})

输出

  

{“ active_users”:1}