5

我正在流星中制作一个简单的聊天室。如何获得当前活跃用户的列表?有没有办法实际获取当前连接/客户端的列表?

4

2 回答 2

8

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

我想你会有两个选择:

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

  • 使用sockjs服务器获取打开的套接字Meteor.default_server.stream_server.all_sockets()返回一个包含所有打开的套接字的数组。你可以有一个单一的时间间隔来寻找其中的变化(或者更好的是你会听到 sockjs 服务器本身的变化,有一种register方法可能有用),将打开的套接字映射到你的用户并使用一个集合来推送它给你的客户。每个客户端都知道他的套接字 ID,因此映射不应该太难。

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

于 2012-10-25T08:48:29.800 回答
1

我创建了一个 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}

于 2019-11-12T23:48:05.460 回答