问题标签 [ably-realtime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
222 浏览

websocket - Can I attach and subscribe to channels using wildcards?

When using Ably for Pub/Sub over WebSockets, can I use wildcards to subscribe to multiple channels like so

(disclaimer: I am a developer advocate for Ably, and posting and self-answering a commonly asked support question here on Stack Overflow so our users can find this more easily)

0 投票
2 回答
62 浏览

swift - 从 Any 转换到其他任何东西都失败了

API 给了我一个类型为 的变量Any。当我打印它时,它看起来像这样。

我试图用SwiftyJSON这样的方式投射它,let mydata = JSON(data)但它失败了。我尝试使用 Swift 4 解码技术,但也失败了。我试图这样做,let myData = data as? Dictionary<String, String>但它再次失败。

我不知道在这里做什么。任何提示或解决方案?

0 投票
1 回答
194 浏览

ably-realtime - ConnectionManager.onChannelMessage() 接收到的消息具有不同的connectionSerial,但与之前的消息ID 相同;丢弃

将 Ably Realtime 用于基于 Web 的预订系统。

尽管一切正常,但我一直在 js 控制台中遇到一些错误。

基本上,有一个日期选择器,当访问者选择一个日期时,我将一个全局变量设置day为日期(类似于2018-05-25)和 call VisitorMessages.start(),它为它们订阅消息并使它们出现在频道上visitor:2018-05-25,并从所有其他频道取消订阅它们.

我还有一个visitor:all频道,每个人都可以在上面接收消息,并且不需要在场。

这是我正在做的事情(请原谅 CoffeeScript):

在 js 控制台中,访问者会得到一堆这些:

有时这是:

而且,当切换到不同的日期(设置日期和调用VisitorMessages.start())时,他们会得到:

我知道这可能是因为我在切换日期时明确释放了频道,但是当我不这样做时,VisitorMessages.realtime.channels.all将包含我曾经加入的所有频道,并且我仍在接收未订阅频道的消息。

所以,这里发生了很多不同的事情,但是有人可以看到我的方法中的一些大缺陷或帮助我理解为什么会发生这些错误吗?同样,一切正常,但有些不对劲!

谢谢!


这是上面编译成javascript的代码:

0 投票
2 回答
390 浏览

websocket - 基于 geohashes 的 pubsub 主题划分的建议,以实现巧妙的 websocket 连接服务

我的问题涉及以下用例:

用例参与者

  • 用户A:设置广播区域并查看带直播帖子的流的用户。
  • 用户 B:在用户 A 设置的广播区域内第一个发送广播消息的用户。
  • 用户 C:在用户 A 设置的广播区域内发送广播消息的第二个用户。

在此处输入图像描述

用例描述

  • 用户A选择一个广播区域,在其边界(半径)内他想要接收直播消息。
  • 用户 A 打开 livefeed 并请求一组初始 livefeed 项目。
  • 用户 B 从用户 A 的广播区域内广播一条消息,而用户 A 的 livefeed 仍处于打开状态。用户 A 的实时源打开时,带有 1 个新实时源项目的标签会显示在其顶部。
  • 当用户 C 从用户 A 的选定广播区域内发布另一个实时馈送帖子时,标签计数器会增加。

用户 A 收到类似于以下 Facebook 示例的通知: 在此处输入图像描述

我想应用的解决方案(我认为 Pubnub 使用)是为每个 geohash 创建一个主题。
在我的情况下,这意味着对于广播消息的每个用户,它都需要发布到 geohash-topic,如果它落在范围内,客户端(应用程序/网站用户)将通过 websocket 使用 geohash-topic定义的区域(半径)。Ably 似乎使用 Web 套接字提供这种可扩展的服务。

我想它会简化成这样:

在此处输入图像描述

因此,这意味着需要从发送广播消息的当前位置提取 geohash。这个 geohash 应该具有足够小的粒度,以便接收用户可以设置或多或少准确的广播区域。(即,如果我们希望允许用户定义接收实时消息的广播区域,geohash 应该具有足够的准确性,这意味着如果我们决定扩展,人们应该期望有相当多的主题)。

选项 2 是为粒度较小(覆盖较大区域)的 geohash 创建主题,并让客户端根据与消息一起发送的 latlng 值来处理准确性。
然后客户端将决定是否丢弃消息。但是,这意味着发送更多消息(更多开销)和更高成本。

我没有这种架构的经验,并且质疑这种方法的可行性/可扩展性。
您能否想到这个问题的替代解决方案以达到预期的结果或提供更多关于如何整体解决此类问题的见解?(我也考虑过使用常规的 req-res 流,但这意味着向服务器发送垃圾邮件,这似乎也不是一个很好的解决方案)。

我确实查过了。
给定一个 161.4 平方公里的区域(如布鲁塞尔区域),geohashes 按字符串长度划分如下:

鉴于我们将允许用户可能有高达 153m 的不准确性(在用户可能希望订阅以接收本地广播消息的区域),这将需要大量的主题,这些主题肯定已经太大,甚至无法仅涵盖布鲁塞尔的整个地区。
所以我目前仍然有点卡在这个水平上。

0 投票
1 回答
206 浏览

publish-subscribe - 如何使用 ably.io 设置电子商务消息传递解决方案

我有一个电子商务网站,我想使用ably.io在我的客户之间实施消息传递解决方案。我是 ably.io 和pub/sub消息模式的新手,需要一些建议才能让我走上正轨。

假设我的网站上有 75,000 个用户。用户可以创建广告......如果有人对广告感兴趣,他们应该能够向广告商发送消息。

这是我在阅读 ably 的文档后想到的解决方案:

由于我有 75,000 个用户,我创建了 75,000 个频道,每个用户 1 个频道。

一个名叫 Brian 的用户在网站上创建了一个广告。Brian 订阅了BrianChannel以接收他自己频道上的所有消息。现在 Amy 和 Tom 看到了 Brian 的广告,想联系他,他们在BrianChannel上发布消息,Brian 会收到消息。

我不确定上述解决方案是否正确?

如果上述解决方案是正确的方法,我还有两个问题:

  1. 让我们 Brian 使用 JavaScript 订阅BrianChannel。现在,Brian 显然不是 24/7 在线 - 他离线时我应该如何处理他的消息?

  2. 我在我的网站上注册了 75,000 个用户。在任何时候都有 5,000 名用户在线。在这 5000 个在线用户中,有 20 个用户实际上是在互相发送消息。使用我上面的解决方案,我应该为所有在线用户拥有 5,000 个活动频道......有没有办法减少活动频道的数量?也许通过定期轮询频道?

0 投票
1 回答
220 浏览

java - 无法将 Gradle 依赖项添加到我的 Codename One 项目

我正在使用 Codename One 使用 Netbeans 构建一个简单的在线应用程序,并且我想使用 Ably 进行互联网通信,但是我在导入 Ably API 时遇到了问题。

Ably 的网站告诉我,我需要将该行添加compile 'io.ably:ably-java:1.0.0'到 build.gradle 依赖项部分,但我的项目中没有 build.gradle。看到这个问题后,我添加了一个新的构建提示,gradleDependencies作为键和compile 'io.ably:ably-java:1.0.0'值。

但是,当我尝试运行该项目时,它仍然失败并告诉我error: package io.ably.lib.types does not exist import io.ably.lib.types.*;

我做了一些更多的研究,但似乎一切都表明我做了正确的事情,比如thisthis。我也尝试将构建提示键更改为android.gradleDep,但没有任何改变。

这是它在 Netbeans 上的样子: 在此处输入图像描述

这是构建提示窗口: 在此处输入图像描述

如果您需要更多信息,请告诉我。谢谢!

0 投票
1 回答
401 浏览

node.js - 回收 Ably 实时连接

我遇到了一个奇怪的问题。在我们的应用程序(基于 React-native)中,我们托管了 70 个并发客户端,但监控页面中的峰值显示 380 个连接。我假设客户端可能退出并返回或以某种方式重新加载应用程序,因此 Ably 连接再次重新生成,因此峰值增加。

现在的问题是:有什么方法可以强制 Ably 断开所有未使用的连接,从而降低峰值?(可能来自后端)

谢谢。

0 投票
1 回答
346 浏览

c# - 使用 Ably.io 创建连接时出现未知错误

我们有一个用例,用户尚未登录应用程序,也没有创建身份验证令牌。应用程序需要连接到公共通道上的 Web 服务器以检查应用程序更新。连接失败。错误原因如下:“未知错误;代码:500;HttpStatus 代码:(404)NotFound。

来自 Nuget 0.8.11 的 Ably 库和 SDK。

以下代码未连接到 Web 服务器。

0 投票
1 回答
108 浏览

ably-realtime - ably.io (AMQP|MQTT) 队列客户端可以使用令牌进行身份验证吗?

我想允许不受信任的客户端订阅 ably.io 上的 MQTT 和 AMQP 队列。

我可以以某种方式使用https://www.ably.io/documentation/core-features/authentication#token-authentication中描述的令牌身份验证方案之一,还是必须为每个客户端设置单独的 API 密钥?

如果是后者,是否可以动态配置 API 密钥?

我浏览了文档和帮助台文章,但找不到有关此组合的任何信息。这只是我缺少的功能还是通常是个坏主意?

提前致谢

0 投票
1 回答
139 浏览

angular - 开始使用 ABLY

我将https://github.com/ably/ably-js添加到我的项目中,以便我可以使用打字稿。目前我的文档将currentBid信息添加到mongodb文档中,对应auctionId。我正在尝试将auctionId 与currentBid 值相关联,以便使用ABLY 将正确的值分配给正确的拍卖,因此我将通道名称分配给auctionId,并将currentBid 值作为数据。下面是我的代码。目前它确实说发布成功了Your app statistics summary,它确实根据它的消息计数器注册了消息。

现在在 channel.subscribe 上,当出价发生时,innerHTML 会在屏幕上变成一个 JSON 对象。不知道我将如何关联正确的auctionId。我将如何查询我发布的频道?

在 innerHTML 中返回的值是如果 currentBid 是 205.00 美元并且我出价 15.00 美元,那么我的 channel.subscribe 输出如下:

The message.data value stays at $205.00 价值永远不会更新到 $220.00

在此处输入图像描述