问题标签 [pubnub]

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 回答
444 浏览

javascript - 在页面加载期间使用 pubnub 和 jquery/javascript 从 servlet 更新值

我是 javascript 和整个前端开发的新手。

这是我正在使用的:

  • 在 Tomcat7 上运行的 Java servlet
  • 用于布局/主题的 twitter-bootstrap
  • Pubnub 跟踪表单提交的次数
  • Javascript/jquery 在网页上显示此值。

我添加了 PUBNUB.subscribe 回调,它可以很好地更新网页上的值。但是,当我第一次加载网页时,我不知道应该显示什么值。

这是我为解决这个问题所做的:我向 servlet 添加了一个方法,当在 POST 请求中传入正确的参数时,它将发送一条 pubnub 消息,其中显示的数量可以正常工作。

接下来,我尝试使用 jquery 调用 POST 请求,如下所示:

我尝试将它放在 $(window).load 函数中,但是当我加载网页时,它并没有达到我的预期。我希望它在加载所有内容后执行 POST,这将导致从 servlet 发布 pubnub 消息,这将激活 PUBNUB.subscribe 函数中的回调方法。但是,该值没有改变,它仍然是在 html 中硬编码的占位符。

目前,我正在调用 setTimeout("updateUses()", 1500); 从 $(window).load 函数中。updateUses() 与我之前展示的 $.post 调用完全相同。

现在,当我加载页面时,占位符值会存在一段时间(似乎超过 1.5 毫秒),然后它会更新为正确的值。如果我删除 setTimeout 并直接调用 updateUses() ,则不会再发生任何事情。

我需要更改什么以便它立即加载值(或至少没有明显的延迟)?

0 投票
2 回答
782 浏览

python - PubNub - 推送 HTML 更新

我目前正在尝试将 html 更新推送到使用PubNub的用户的页面。我想将 html 代码推送给用户(这包括链接、引号、使 html 成为必需),并将其添加到用户表的末尾。

我目前正在尝试使用 api 发送消息,如下所示:

消息在哪里:

我的问题是当我尝试发送页面更新时收到以下消息:

我假设发生这种情况是因为我试图发送 html 代码?

关于如何解决这个问题/更好的方法来做到这一点的任何建议?这是我第一次尝试将消息“推送”到网页,所以我可能完全错了。

0 投票
1 回答
364 浏览

javascript - PubNub 如何将您的帐户与 JavaScript API 绑定?

PubNub 好像是按域名绑定你的账号的。我似乎无法在支持和 API 中找到明确的答案。

由于没有使用 JavaScript 中的发布、订阅或密钥,您的站点的域似乎是绑定的。这是准确的吗?

我还没有开始玩它,但这会很糟糕,因为这意味着我已经将我的代码推送到服务器只是为了测试。

我需要知道这一点,因为我想要一种使用本地主机测试我的 Web 应用程序的方法。

0 投票
3 回答
5537 浏览

private - PubNub 最佳实践:如何管理私人房间?

我正在学习 pubnub,我阅读了他们的文档,但我只是找不到如何管理多房间聊天框。

默认情况下,任何人都可以收听频道。订阅它并在上面发布很容易。

我想要的是有一个主要的公共房间(到目前为止一切都很好),但任何人也应该能够与其他人私下交谈,而不会有被其他用户阅读的风险。

这些动态房间将被标记,用户应该能够从一个到另一个。

另一个要求是与某人私下交谈不会将您踢出您订阅的其他房间(您仍然可以在聊天时收到新消息已发布到另一个房间的通知)

实现这一目标的最佳实践是什么?

  • 我会使用不同的频道(动态创建)吗?
  • 我会使用一个频道并根据他们的状态、伪房间 ID 或主角过滤消息吗?
  • 我会使用多路复用(仅一个套接字)吗?

我需要知道实现这一目标的最佳方法,因为文档只描述了一个房间的基本场景,互联网上对此一无所知。

谢谢你。

PS:我知道 PubNub 一次不推荐超过 2 个频道(尽管我很难找到对此的解释)。

PPS:我正在使用带有 socket.io 的 punbub

0 投票
1 回答
1558 浏览

c# - 编写一个长时间运行的 pubsub 服务器/服务 c#

我一直在玩 pubsub,到目前为止它看起来很适合我需要的东西(一个基本的游戏实验)。

从 Javascript 和移动(通过 Appcelerator 的 Titanium)的角度来看,我真的可以看到使用 pubsub 的价值。

但是,我需要在 c#/.NET 中编写一个服务器应用程序(尽管对其他想法持开放态度)来监听我拥有的订阅者队列,并处理消息..这涉及一些决策等,然后可能会写入另一条消息例如发布队列。

到目前为止,我已经使用了 C# 的 RX(反应式扩展),它在我的订阅频道上收听。到目前为止一切顺利,我看到了消息,虽然现在我只是写了一个 C# 控制台应用程序来测试。

我的问题是等待和收听 pubsub 订阅者消息的最佳方式是编写一个 Windows 服务应用程序吗?还是有另一种更合适的技术?显然在某些可能的点上,我可能不得不将服务器扩展到 2-3 个服务器,但是鉴于 pubsub 队列/消息传递的性质,如果我有一些负载平衡等,我看不到问题。

欢迎任何想法!

0 投票
2 回答
2127 浏览

php - pubnub PHP 订阅功能

我需要重大帮助!

我无法让 Pubnub 订阅功能与 PHP 一起使用!我可以让发布功能工作,但不能让订阅功能工作。我直接从 Pubnub 站点复制了一些代码,但我什么也没得到。有什么帮助吗?另外,我的 PHP 版本是 5.2.*。

代码:

0 投票
2 回答
2401 浏览

javascript - 如何使用 pubnub 获取活动订阅者列表

我使用pubnub. 在这里,我正在尝试获取当前连接到网络的应用程序的订阅者列表(在线)。我正在使用钛框架工作(JavaScript)。谁能告诉我如何获得这份订阅者名单。提前致谢。

0 投票
1 回答
323 浏览

titanium-mobile - 如何在pubnub上获取特定频道的订阅者列表

我正在使用 pubnub 在钛中编写应用程序。我需要获取订阅特定频道的所有人的设备 ID 或任何特定详细信息。请让我知道如何将所有订阅者的设备 ID 获取到特定频道。

谢谢

0 投票
1 回答
1013 浏览

rest - 聊天与 REST 和 PubNub 推送架构

我的聊天应用程序的主要用例是一位代理通常会与一位客人交谈。最多我计划支持低个位数的客人和代理,但使用这样的功能会非常少。更重要的是,发送者不需要接收他们自己的消息,因为 HTTP 状态会确认收到消息。

我正在考虑将 PubNub 用于“仅推送”。因此,每个客户端将通过 HTTP (PUT/POST) 向应用程序 Web 服务器发送消息,并且仅通过其自己的 PubNub 订阅通道接收消息。

当 Web 服务器应用程序接收到 HTTP 聊天消息时,它会映射消息发送到的客户端并将消息发布到这些特定客户端的通道。所以一个循环调用PubNub.publish(client_channel_id, the_message).

这样,每个客户端必须只订阅一个通道而不是多个通道,并且每个客户端只接收为其指定的消息(即没有全局通道,也没有客户端过滤)。

(我也在考虑使用 Redis 来保存哪些客户端在哪些房间聊天的地图。因此,每次 Web 应用程序收到聊天消息时,它可能(使用本地缓存)必须首先签入 Redis 以映射消息的目的地渠道...)

潜在问题

  • 在服务器范围内使用单个 PubNub 连接可能无法很好地扩展。连接池可能会更好。由于我们只是广播这些连接而不是订阅,所以它应该很简单,对吧?

你能看到这个设计的任何其他潜在问题吗?其他的建议?

0 投票
1 回答
9790 浏览

pubnub - PubNub 在两个私人频道之间发布消息

我正在使用 PHP 和 MySQL。

我刚刚注册了 pubnub 推送 API,并使用 Pubnub 提供的 PHP 推送 API 成功发出了我的第一个推送通知。我是这种实时技术的新手,所以我提出了一些我觉得难以理解的问题。我用谷歌搜索了很多次,并在stackoverflow上进行了搜索。我在其他地方没有得到任何相关的建议或问题,所以我在这里写下我的问题,寻求您的建议和专业知识的帮助。

Pubnub 表示,为每个客户创建两个以上的频道并不是一件好事。因此,在我的应用程序中,我需要创建两个以上的频道来收听我网站上各处发生的通知,但我将为每个登录用户使用两个频道,正如 Pubnub 建议的那样。

  1. 登录用户收听 Channel1-Public
  2. 登录的用户收听私有的 UsersOwnDynamic-Channel 以接收相关的通知,并且只针对他。

仅供参考:PubNub 中的此链接说有关创建 LongChannel 名称以避免 Channel Snooping

我的问题如下:
A. 每次登录网站时,我是否总是需要创建一个新的私人动态频道名称。如果是这样,其他用户如何知道如何向我的私人频道发送通知。或者,我是否只需要在数据库表中存储一个静态频道名称,以便其他经过身份验证的用户查询该表并获取我的私人频道向我发送通知的名称。如果是这样,你不认为如果黑客掌握了某些用户的一些私人频道名称,他们将能够收听该频道吗?

BI 正在使用 PHP 和 MySQL,所以我仍然无法想出办法或想出一个解决方案来将消息发送到另一个用户的私人频道。
让我们以一个简单的好友请求系统为例。
- UserA 向 UserB 发送好友请求。
- UserB 正在收听他自己的名为 DynamicPrivateChannelB 的动态私人频道名称
(UserA 将如何找到 UserB 的私人频道名称?我认为唯一的方法是 UserB 的私人频道应该存储在每个数据库表中登录用户查询。我的想法是否正确?)

C. 如果我们总是生成动态私有频道名称,存储在数据库表中,每当生成新的动态频道名称时进行更新。我认为这会导致问题,因为某些消息不会被传递,因为新的动态私人频道名称会替换旧的。

D. 所以,我有很多通知要发送到一个单一的频道,比如新朋友请求、新私人消息回复、新礼物请求和许多其他类似的。如何将所有这些数据发送到通道以及如何找出和解析传入的新通知数据。我知道 JSON 是发送的格式,但我不确定发送的格式。

根据此链接,单个 Pubnub 频道最多只能包含 100 条消息。这是否意味着如果 200 条消息同时发送到单个通道,则前 100 条消息被传递,其余消息在队列中?如果 10,000 条消息同时发送到一个频道会怎么样?是否所有剩余的消息都留在队列中?如果是这样,它如何实时交付给订户?

让我给出另一个我想要实现的简单场景。

  • UserA已通过身份验证并登录到网站。
  • UserA生成自己的动态频道名称,UserAx732dsw3efsdfsdfsdf
  • UserA开始收听他新创建的频道UserAx732dsw3efsdfsdfsdf
    (现在​​,userA 应该开始接收来自其他人的消息)


- UserB向userA发送私人消息。
(现在,只有 userA 应该在他的私人频道上收到关于新私人消息的通知,userB 或系统如何找到 频道名称UserAx732dsw3efsdfsdfsdf因为,这是一个由userA动态生成的私人频道,系统userB都没有访问过同样的事情也发生在userB 身上,如果userB应该被任何其他实体或系统再次通知,应该有办法找出userB的动态频道名称。

另一个问题是这种情况是,如果用户每次登录网站时都动态生成频道名称。发送到动态通道的所有消息会发生什么?pubnub 是否将所有创建的频道名称保存在其服务器上?有没有什么方法可以让系统或用户找出频道名称是否仍然是自己的,并且至少有一个用户正在收听频道?

我很想知道这一点,因为我有以下概念:

  • UserA在凌晨 1点登录网站时创建了dynamicChannelA
  • UserA 开始收到大量通知推送到他的动态频道dynamicChannelA
  • 现在,UserA在凌晨 1:30从网站注销,许多其他仍在向他的dynamicChannelA推送通知的用户会发生什么,因为当UserA下次 登录网站时,UserA将监听不同的动态频道名称。UserA不会收听他以前的频道dynamicChannelA


我正在考虑使用从数据库表中检索特定用户的频道名称的方法。是否有任何方法或方法可以防止未经授权的频道订阅?因为任何人都可以订阅频道名称,只要他们有订阅密钥和频道名称,无论频道名称有多长。我只是好奇,因为所有订阅都发生在客户端,并且订阅密钥和频道名称是可见的。