- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
嘿,我正在使用 pubnub
服务向我的 Titanium 应用程序添加聊天功能,但我想知道是否有办法获取未读消息的数量。
api 引用资料中没有关于此的信息
我试图保存历史消息的数量,然后重新加载新的历史记录并计算差异,但这是一个如此愚蠢和复杂的解决方案,任何人都知道如何实现这一点?谢谢
最佳答案
多年前,我们曾 promise ,我们会在您的应用中提供一种 super 简单的方法来跟踪未读消息数。现在终于可以了!使用PubNub Functions ,您可以将永久状态对象和值添加到您的多设备应用程序中。您将使用我们在 PubNub 函数键/值存储引擎中提供的原子方法。PubNub Functions 存储引擎 ( kvstore ) 被复制到每个数据中心,使其能够快速可靠地存储/检索数据。
您只需创建一个函数来递增
、递减
和检索
未读消息的当前计数。
我们的函数将对发送到 channel 的消息进行计数,并使用以 channel 和用户 ID 命名的键使用原子递增和递减方法保存值。这是一种称为“常规命名空间”的实用设计模式。这意味着您将使用在消息中找到的提示和信息片段来创建一个可根据消息中的信息构造的名称。在此示例中,我们将使用 channel 名称作为常规名称间距。
第一个函数将增加一个值以跟踪用户收件箱中的未读邮件。
Channel:
room.*
Event:
On-Before Publish
// Access to Distributed Database
const db = require('kvstore');
export default (request) => {
// Conventionally build the Key ID based on the request parameters and channel name.
let counterId = request.channels[0] + '/' + request.params.uuid;
// Increment or Decrement the unread message counter
let method = request.message.read ? -1 : 1;
// Increment/Decrement and read the unread message counter
return db.incrCounter( counterId, method ).then(()=>{
return db.getCounter(counterId).then((counter) => {
request.message.unread = counter || 0;
return request.ok();
});
});
}
现在,任何发布到此 channel 层次结构 room.*
的 JSON 消息都将通过递增计数器来跟踪未读消息。可以通过包含读取标志来递减计数器。如果需要,此阅读方法也可用作阅读回执跟踪系统。您可以在 Adam Bavosa 的文章中了解有关已读回执的更多信息:Read Receipts Pattern for Realtime Chat Apps .
像这样向 room.john-smith
发布消息:
{ "message" : "Hello John!" }
John 将收到您的消息,并且消息中会添加一个未读消息计数器。该消息将使用 unread
变量进行扩充。现在消息看起来像这样:
{ "message" : "Hello John!", "unread" : 1 }
John 可以通过发布回复已读回执:
{ "read" : true }
该消息将使用未读
计数器更新已读回执。
{ "read" : true, "unread" : 0 }
就是这样!你做到了。模式将根据群组和一对一消息传递应用程序而改变。
关于javascript - 如何获取未读消息数 PubNub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33912076/
我们想在 Pubnub 的聊天 channel 中创建消息线程。例如,某人可以通过“创建线程”并开始聊天来响应 channel 中的特定消息。是否有规定的方法来模拟这种行为?如果是这样,您能否引用文档
我们想在 Pubnub 的聊天 channel 中创建消息线程。例如,某人可以通过“创建线程”并开始聊天来响应 channel 中的特定消息。是否有规定的方法来模拟这种行为?如果是这样,您能否引用文档
PubNub 建议“向任何一个 channel 发布消息的速度不得超过每秒 5 条消息”。我想知道 PubNub 本身是否有一些设置可以限制发布消息? 例如,我每秒向一个 channel 发布 100
我们正在使用 NodeJS 发布消息。订阅者是否可以通过电子邮件接收消息? 最佳答案 目前,PubNub 支持原生的 PubNub、GCM 和 APNS 消息端点。更多信息在这里:http://www
想象一下我们有很多生产者和一个消费者的场景。消费者订阅了一个名为“consumerGroup”的 channel 组。生产者每次进入系统,都会将 channel “Producer-ID-Channe
我正在研究 pubnub 以在 Rickshaw 的实时数据可视化中使用。但我不明白 channel 是否已经配置或者我们是否必须配置它们。如果是这样,我们如何为数据可视化配置 channel ?另外
假设相同的 uuid 是 subscribe() with channels 但他们在不同的订阅时间和来自不同的浏览器 场景 使用 Chrome 10 分钟之前 订阅 channel =>channe
我想知道从 pubnub.history 检索到的消息是谁发送的! pubnub.history() 只返回时间 token 和消息。 最佳答案 PubNub 发件人 UUID:实时与历史记录 发送者
是否可以获取与 Pubnub 订阅 key 关联的所有 channel ?使用此 key 创建的所有 channel ? 谢谢, 最佳答案 您可以使用 Global Here Now 调用 - htt
使用 PubNub Presence 功能时,是否可以提供用户加入或离开 channel 时 PubNub 调用的 HTTP 回调?就我而言,我想调用 Parse.com 云函数。澄清一下:我不想从客
我有一个特定的用例,我需要将用户的账户余额发送到他们的浏览器和/或移动设备。这些余额当然是私有(private)的,但当余额发生变化时,我需要将余额更新发送给每个连接的用户,但是,我担心会同时推送到
我有一个应用程序,每个用户必须接收仅与他们自己相关的通知。 为此,我为每个用户创建了一个唯一的 channel 名称。当用户使用 javascript 从浏览器登录时,我订阅了这个 channel 。
是否可以在 pubnub 中发布到 channel 组并接收到添加到 channel 组的所有 channel 的消息? 最佳答案 发布到 channel 组 目前不支持发布到 channel 组或多
在我的一个应用程序中,我使用 PUBNUB 进行实时网络通信。 但是我面临一些奇怪的问题,因为当我订阅一些 channel 时,window.print()(打印预览对话框未打开)根本不起作用。 如果
我正在尝试将时间戳 2016-02-11 03:31:18 转换为 17 位精度 unix 时间 (UTC) 的 pubnub 时间戳,类似于 pubnub 给出的引用 URL 中给出的 134067
PubNub 的 Eon Charts 为每条单独的 PubNub 消息查找一个 JSON 对象数据集。请参阅 git hub 上的 Eon-Chart pubnub-c3.js。 要了解可能出现的数
我正在使用 PubNub Api 和 ionic 平台创建 Whatsapp 应用程序。但是,它存在 ionic.bundle.js:21157 TypeError: PubNub.publish 不
记录每条已发布消息并将其保存到我的服务器数据库的正确方法是什么? 我能想到的有两种选择: 在发布事件后使用 PubNub 功能并将消息转发到专用的记录器 channel 。服务器将订阅 channel
我想从事与即时消息相关的个人项目。我想知道是否有像 pubnub 这样的 API 对公众开放。 谢谢 最佳答案 您可以在 http://www.pubnub.com/developers 找到所有开源
我正在努力了解如何使用 rxjs 库将以下内容转换为 observable。 var client = PUBNUB.init({ publish_key: 'pubkey', subscri
我是一名优秀的程序员,十分优秀!