我无法获得Pubnub存在超时以可靠地使用心跳值 - 我缺少什么?

时间:2014-10-31 18:53:00

标签: pubnub

我们有各种pubnub客户端:javascript,ruby,actionscript

重要的是我知道客户是否/何时离开频道;即使浏览器或桌面应用程序(Native Air应用程序)崩溃。我正在更新ActionScript库以支持在线状态,所以我从JavaScript和Ruby实现中抄袭,当所有内容都表现得很好时我会工作,但心跳似乎不能用于检测在我的版本中崩溃的客户端。

所以,我在Ruby中使用irb(gem version 3.6.7)尝试了以下内容:

require 'pubnub'

pn = Pubnub.new(:subscribe_key => 'my_sub_key', :uuid => 'my_uuid', :heartbeat => 30)
pn.subscribe(:channel => 'my_channel') { |d| d.msg }

然后我输入了subscribe_key并进入了Pubnub控制台。正如所料,我的订阅就在那里。

我退出了irb并等待。我希望在大约30秒的时间内看到存在超时,但是在我收到超时之前需要等待整整6分钟。

另请注意:似乎可以使用Javascript客户端。

我是否需要在“存在”之外转换其他内容以使其按预期工作,或者我是否误解了心跳的作用?

2 个答案:

答案 0 :(得分:1)

在查看Javascript设置和Ruby 3.6.7之间的区别后,我注意到Ruby心跳帖没有将心跳作为参数传递。

当我将heartbeat参数添加到我的ActionScript版本时,它开始正常工作。

我仍然很困惑为什么Ruby gem会为其他人工作。

答案 1 :(得分:0)

我在http://www.pubnub.com/console/?channel=my_channel&origin=pubsub.pubnub.com&sub=demo-36&pub=demo-36使用我们的网络控制台(使用演示键)进行了相同的测试

我运行了上面的代码,然后运行了IRL中的CTRL-D。

它按预期工作,30秒后:

Fri Oct 31 2014 15:35:38:597 : <my_channel 
{"action":"timeout","timestamp":1414794938,"uuid":"my_uuid","occupancy":1}

Fri Oct 31 2014 15:35:08:527 : <my_channel> 
{"action":"join","timestamp":1414794908,"uuid":"my_uuid","occupancy":2}

你在哪个版本的宝石?我刚刚使用RubyGems中的3.6.7进行了测试。

geremy