zkillboard/redisq

此软件包的最新版本(v1.0.0)没有可用的许可信息。

基于Redis的简单队列

安装: 380

依赖项: 0

建议者: 0

安全性: 0

星标: 37

关注者: 8

分支: 4

公开问题: 0

语言:JavaScript

v1.0.0 2016-05-27 21:47 UTC

This package is auto-updated.

Last update: 2024-09-04 15:30:53 UTC


README

Scrutinizer Code Quality

RedisQ

一个使用Redis作为后端服务的简单队列服务。您只需将代码指向 https://redisq.zkillboard.com/listen.php。然后解析您收到的JSON,并对其进行任何操作。

如果10秒内没有收到击杀邮件,您将收到一个空包裹,例如:{"package":null}

服务器将记住您的queueID长达3小时,因此代码中的暂停不会导致您错过击杀邮件。

我需要Redis才能使用此服务吗?

您不需要Redis来使用此服务,它之所以被称为RedisQ,是因为服务本身是由Redis驱动的。

我该如何识别自己?

RedisQ将使用参数queueID来识别您。此字段是必需的!示例

https://redisq.zkillboard.com/listen.php?queueID=Voltron9000
如果没有新的击杀邮件,我该如何等待少于10秒?

默认情况下,RedisQ将等待最多10秒以等待新的击杀邮件。要等待少于10秒,您可以使用ttw参数,即timeToWait。示例

https://redisq.zkillboard.com/listen.php?ttw=1

是的,您可以组合ttw和queueID参数。代码将强制执行1秒和10秒的最小和最大值。

常见问题解答

所以,这似乎很简单。我还需要做什么?

这确实非常简单。您只需将某物指向 https://redisq.zkillboard.com/listen.php,这可以是curl、file_get_contents、wget等。以下是一个使用PHP获取击杀邮件的示例

$raw = file_get_contents("https://redisq.zkillboard.com/listen.php?queueID=YourIdHere");
$json = json_decode($raw, true);
$killmail = $json['package'];

就是这样。现在您有了击杀邮件。将其放入循环中,您可以继续获取zKillboard获取的所有击杀邮件。

我可以在请求之间暂停而不错过任何击杀邮件吗?

是的,RedisQ根据您的queueID来识别您,并会在3小时内记住您。因此,您可以设置每分钟、5分钟、15分钟等运行的cron作业,而不用担心错过任何击杀邮件。

RedisQ有速率限制吗?

没有速率限制。本质上,如果没有击杀邮件要给您,RedisQ将让您等待最多10秒,然后返回一个null包裹。如果您有很多击杀邮件要给您,您可以随意快速调用RedisQ,并尽快将击杀邮件返回给您。

我可以在RedisQ上使用多个连接吗?

(此部分目前已弃用,可能是暂时性的)

一次只能允许一个连接。如果您尝试更多连接,额外的连接将收到http 429错误。过多的429错误会导致您的IP和用户id(如果提供)被临时禁止数小时。

我可以仅订阅我自己的飞行员/角色/联盟的击杀邮件吗?

目前不行。我在制作这个时选择了简单性,没有添加任何用于过滤和/或订阅的代码。您可以在您的端轻松编写代码以过滤击杀邮件到您喜欢的格式。

真的吗?为什么这样做而不是使用WebSockets或其他类似的东西?

WebSockets很棒,当然,但我想写一些在任何语言中都非常容易实现的东西。RedisQ不是试图像WebSockets那样花哨,它只是在快速、简单的方式中传播击杀邮件。

如果您真的想使用WebSocket,请使用zkill的WebSocket服务。文档可以在以下位置找到: https://github.com/zKillboard/zKillboard/wiki/Websocket

为什么叫RedisQ呢?

因为我使用Redis来实现我所尝试的功能,它是一个队列类型的服务,所以我选择了这个完全没有创意的名字RedisQ。

为什么RedisQ不使用PHP时你还使用.php扩展名?

RedisQ的初始版本使用PHP作为后端语言。然而,之后的重构现在使用NodeJS。为了保持简单并允许良好的向后兼容性,端点保留了.php扩展名。