标签: pubnub

PUBNUB读取未读消息计数

我正在使用PUBNUB开发聊天应用程序.我需要unread从PUBNUB 获取消息的数量.这有可能吗?

如何使用PUBNUB完成此要求.

请建议

javascript angularjs pubnub

7
推荐指数
0
解决办法
243
查看次数

PubNub:将所有已发布消息记录到我的数据库的正确方法是什么

记录每个已发布消息并将其保存到我的服务器数据库的正确方法是什么.

我可以想到两种选择:

  1. 使用PubNub功能发布事件后,将消息转发到专用记录器通道.服务器将订阅该频道并将到达的消息保存到db.这里提出另一个问题:当我将消息转发到PubNub函数中的另一个通道时,它还会触发PubNub函数吗?
  2. 使用PubNub XHR请求/响应函数并使用发布的消息调用我的服务器上的rest API并将其保存到db

有关性能和成本的最佳实践是什么?

pubnub

7
推荐指数
1
解决办法
857
查看次数

Pubnub接收重复的消息

我正在使用PubNub与Backbone和javascript sdk进行应用内聊天.如果我导航到另一个视图并返回聊天窗口,当我发布消息时,我会一式两份地收到它.如果我再次浏览,我会一式三份收到消息,等等.

我想我每次回到聊天页面时都会一次又一次地订阅 - 但是我无法取消订阅工作,我找不到任何有关订阅的文档.

我可以使用支票查看我是否已订阅?

我的代码是:

// INIT
var channel = 'my_channel';
var pubnub  = PUBNUB.init({
subscribe_key : 'demo',
publish_key   : 'demo'
});

function chat(message) {
if (message.uid == "xxx") {
    $("#convo").append('<div class="isaid">' + message.message + '</div><div class="clear clearfix"></div>');
} else {
    $("#convo").append('<div class="hesaid">' + message.message + '</div><div class="clear clearfix"></div>');
}
}

pubnub.history({
channel  : channel, // USER_ID Channel
limit    : 30,      // Load Last 50 Messages
callback : function(msgs) { 
    pubnub.each( msgs[0], chat );
}
});

pubnub.subscribe({
channel: …
Run Code Online (Sandbox Code Playgroud)

javascript pubnub

6
推荐指数
1
解决办法
1966
查看次数

Pubnub在Android上推送通知和电池续航时间

我们正在编写一个聊天应用程序,并在后台运行Pubnub服务,收听消息并在收到时触发通知意图.问题是,当手机正在睡眠时,我们正在使用部分唤醒锁定并且只会杀死电池(应用程序占用电池的20%以上).

是否有较少CPU密集的侦听消息的方式?我也尝试在Android上查找Pubnub推送通知的代码示例,但是没有找到任何代码示例.

谢谢,Saswat

android battery push-notification pubnub

6
推荐指数
2
解决办法
906
查看次数

PubNub是否使用WebSockets和/或XMPP?

无法找到一个明确的答案:

WebSockets:支持WebSockets(http://www.pubnub.com/websockets/)和socket.io,但其他SDK是否使用Web套接字?

XMPP:PubNub是否将其用作通信协议?

xmpp websocket pubnub

6
推荐指数
1
解决办法
2532
查看次数

当应用程序进入后台状态 iOS 8 时,Pubnub 连接停止

标题说明了一切。我看这个问题,并在这里对pubnub论坛(同样的问题,只是不同的建议)。

问题的核心是,一旦应用程序挂起,pubnub 连接就会排队,直到应用程序返回前台才会发送。发送通知说您将进入频道的后台,但它不起作用,这似乎是合理的做法。

从我的阅读中我了解到 pubnub 使用 websockets 并且它在后台模式下是不允许的。甚至尝试启用 VOIP 作为后台模式,但没有运气,但位置更新 bg 模式有效。但是,使用它会使我的应用程序被拒绝,因为我不使用位置服务。

运行此代码时

- (void)applicationDidEnterBackground:(UIApplication *)application {

    [PubNub sendMessage:@"Hello from PubNub iOS!" toChannel:self.myChannel;
}
Run Code Online (Sandbox Code Playgroud)

我从 pubnub 得到这个日志条目(所以至少我知道命令已运行):

Looks like the client suspended"; Fix suggestion="Make sure that your application is configured to run persistently in background
Run Code Online (Sandbox Code Playgroud)

我已经为此自杀了一天。在这些日子里,你开始做一些你认为很简单的事情,15 分钟的事情,它变成了沮丧的一天......你知道我的意思:)

ios pubnub

6
推荐指数
1
解决办法
1328
查看次数

安全的Pubnub订户密钥和通道名称

我有一个应用程序,每个用户必须接收仅与他们自己相关的通知.

为此,我为每个用户创建了一个唯一的频道名称.当用户使用javascript从浏览器登录时,我订阅了此频道.

pubnub = PUBNUB.init({
   subscribe_key : '<subscriber-key>'
});

pubnub.subscribe({
  channel: "<unique-channel-name>",
})
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果有人获得用户唯一频道的名称,他们可以设置自己的pubnub客户端并在没有任何授权的情况下接收通知吗?基本上,保护用户数据的一切都是在页面源代码中公开提供的频道名称和订阅者密钥.我查看了pubnub的访问管理器,但它遇到了同样的问题,不是吗?如果有人打开源代码并复制auth-key,他们可以设置自己的客户端并接收消息吗?

编辑:其他信息

我为每个用户注册时生成并保存了一个频道名称.此名称是随机UUID,如"7304cd62-9ba2-4842-98d8-8a5c8e561275".当我想通知用户时,他们说,他们有朋友请求,我从数据库中提取频道名称并发布通知.每当他们登录时,呈现的页面都使用Ruby将他们的频道名称和我的订阅者密钥注入一个隐藏字段,javascript用它来初始化pubnub.

<%= my_pubnub_subscriber_key %>
<%= current_user.channel.name %>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用Access Manager意味着除了频道名称之外我还必须存储一个auth密钥,并授权密钥读取频道.

John
- john-channel
- john-key-authorizing-read-on-john-channel

Jane
- jane-channel
- jane-key-authorizing-read-on-jane-channel
Run Code Online (Sandbox Code Playgroud)

然后,渲染页面将有三个字段来初始化pubnub:

<%= my_pubnub_subscriber_key %>
<%= john-channel %>
<%= john-key %>
Run Code Online (Sandbox Code Playgroud)

最初的问题仍然存在.如果Jane去John的家,打开John主页的源代码,复制3个键,回家并创建自己的客户端,她可以订阅John的通知.我不知道我的通知的接收者是否实际登录或只是复制了密钥.

我的想法是正确的,为了防止这种可能性,我应该只是定期重新生成频道名称或授权密钥,例如当用户退出或每天?

pubnub

6
推荐指数
1
解决办法
1342
查看次数

Pubnub执行同步请求

我有这个异步请求:

Pubnub pn = new Pubnub(publishKey, subscribeKey, secretKey, cipherKey, enableSSL);

pn.HereNow("testchannel", res => //doesn't return a Task
{ //response
}, err =>
{ //error response
});
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何同步运行它.请帮忙.

.net c# asynchronous async-await pubnub

6
推荐指数
1
解决办法
374
查看次数

PubNub或Pusher并将数据存储在我自己的服务器上

我有一个移动应用程序,用户可以通过聊天(用户只对用户,而不是聊天室)与对方交谈.

今天,一切都是同步的.我们正在考虑将解决方案转换为更"实时"的方式,可能使用PubNub或Pusher.

我们想知道最好的方法,因为我们的服务器需要存储每个发送的消息.

我们想到的是:

  • 每个移动应用程序都会使用用户ID作为频道名称来创建频道.
  • 此频道将用于移动应用/服务器通信.

我的问题是关于服务器,今天我们有一个Nginx/PHP后端.我们希望我们的服务器能够监听所有用户频道,因为我们需要在我们自己的服务器上存储用户发送的消息.

对于用户与用户的通信,我们正在考虑在消息中创建自己的协议.例如.如果用户111想要向用户222发送"hello",则他可以发布"to:222 hello",这将由服务器检索.

收到此命令后,服务器会将"from:111 hello"推送到他自己的频道(即222).

我在这个设计中看到的问题是我们的服务器需要打开尽可能多的渠道,因为我们的数据库中有总用户.

我没有看到更好的方法来做到这一点.

javascript node.js pusher pubnub

5
推荐指数
1
解决办法
3593
查看次数

使用PubNub和React Native

有没有人能够将PubNub与React Native集成?

PubNub支持团队告诉我使用pubnub_browserify包,它应该工作.但是,当我这样做时,require('pubnub_browserify')我得到一个错误,http找不到该模块:

Unable to resolve module http from /Users/jfender/Documents/Workspace/KaiwaReact/node_modules/pubnub_browserify/browserify_node/pubnub.js: Invalid directory /Users/node_modules/http

运行npm install http --save不会更改错误.

我使用的是Node v5.1.0,npm 3.3.12和React Native 0.14.2.

这是我的package.json:

{
  "name": "KaiwaReact",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "react-native start"
  },
  "dependencies": {
    "eslint": "^1.10.0",
    "eslint-plugin-react": "^3.9.0",
    "parse": "^1.6.9",
    "parse-react": "^0.5.0",
    "pubnub_browserify": "^1.0.2",
    "react-native": "^0.14.2"
  }
}
Run Code Online (Sandbox Code Playgroud)

pubnub react-native

5
推荐指数
1
解决办法
2262
查看次数