2014-10-31 36 views
1

我們有各種各樣的pubnub客戶端:javascript,ruby,actionscript我無法獲得Pubnub狀態超時以可靠地使用心跳值 - 我錯過了什麼?

重要的是,我知道客戶端是否離開頻道;即使瀏覽器或桌面應用程序(Native Air應用程序)崩潰。我正在更新ActionScript庫以支持在線狀態,所以我從JavaScript和Ruby實現中分離出來,當所有事情都表現良好時,我的狀態正在工作,但是心跳似乎無法用於檢測我的版本中崩潰的客戶端。

所以,我嘗試使用IRB在紅寶石以下(GEM版本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客戶端一起工作。

我是否需要在超越「臨場感」的基礎上改變其他方面,以使其按預期工作,或者我誤解了心跳的作用?

回答

1

在看什麼之間的Javascript建立和Ruby 3.6.7的區別後,我注意到,Ruby的心跳職位沒有通過心跳作爲參數。

當我的心跳參數添加到我的ActionScript版本時,它開始工作,因爲它應該。

我仍然困惑於爲什麼Ruby gem可以爲別人工作。

0

我只是做了同樣的測試,使用我們的Web控制檯在http://www.pubnub.com/console/?channel=my_channel&origin=pubsub.pubnub.com&sub=demo-36&pub=demo-36(使用演示鍵)

我跑你上面的代碼,然後CTRL-d出IRB的。

和它的作品如預期,30s後:

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

+0

無賴 - 我正在使用一個老的寶石,所以我興奮了一會兒。儘管沒有歡樂 - 我仍然得到相同的結果。我嘗試過不同的渠道。以下是我所得到的:Sun Nov 2014 14:26:30:957: {「action」:「timeout」,「timestamp」:1414956390,「uuid」:「my_uuid」,「佔用率」:1} Sun 11月02 2014 14:20:54:259: {「action」:「join」,「time – 2014-11-02 19:33:19

+0

在[email protected]給我們發電子郵件,這樣我們就可以深入挖掘(弄到鑰匙等),看看你爲什麼獲得與我們不同的結果... – Geremy 2014-11-02 21:02:37

+0

我在github上創建了一個pull請求 – 2014-11-04 11:51:27

相關問題