我在流星上做了一个简单的聊天室。我如何获得当前活跃用户的列表?有没有办法真正获得当前连接/客户端的列表?
答案 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}