0

我使用以 python 编程语言提供的 WAMP WS 创建了一个 websocket 服务器。

我有一个要求,我一次使用 WAMP WS 服务器订阅大约 500 个客户端。

但是当我发布数据时,我只会根据某些条件将其发送给单个客户。我知道循环遍历客户端列表并找出符合条件的客户端然后将数据发送到相应的客户端非常简单。

我想知道,是否有任何其他方法不使用循环,因为如果所需的客户端位于最后一个位置,使用循环将导致大量开销。

4

2 回答 2

0

在进行发布时,您可以通过选项提供事件的合格接收者列表,例如与类似。合格接收者列表应指定为 WAMP 会话 ID 列表(在这种情况下,这是识别 WAMP 客户端的正确方法)。

在内部,AutobahnPython 使用 Python 集合和集合操作来计算实际的接收器 - 这非常快(并且内置在语言中......意味着本机代码运行)。

于 2014-09-23T21:20:13.213 回答
0

大概您遍历每个客户的资格数据并根据该数据做出某种决定。因此,资格数据索引将为您提供近乎即时的访问权限。因此,使用伪代码,例如:

client_array = []
client_index = {}
client_array.add(new client)
if not new client.eligibility_data in client_index:
    client_index[new client.eligibility_data] = []
client_index[new client.eligibility_data].add(new client)

我不知道资格数据是什么,但是,说它是客户的重量。如果您想向重量在 200 到 205 点之间的每个人发送消息,您可以在 client_index[200] 到 [205] 中找到这些客户端。

如果无法事先确定条件,那么您可能需要一个可以处理任意查询的数据库来确定客户端目标。

于 2014-09-22T14:12:02.997 回答