鄭昀@玩聚sr 20090924
康爺發布兩篇pubsubhubbub入門開發教程《pubsubhubbub工作原理及使用入門》和《[教程]如何使用pubsubhubbub協議》,這裡補充幾點:
一、關於訂閱過期和自動訂閱重新整理:
我們簡稱第乙個請求「subscriber sends subscription request」(subscriber-->hub)為subscription request,稱第二個請求「hub verifies intent of the subscriber」(hub-->subscriber)為verification。
還存在乙個保持心跳的策略,即automatic subscription refresh。這樣,當你的 subscriber 掉線或者宕機一段時間後,hub就不用再 push 資料給你了。
1: 當發起verification請求時,hub還會附帶發過來乙個引數:
hub.lease_seconds=3600
表明一小時後這個訂閱就會過期(subscription expiry)。
2: hub.lease_seconds這個值可以是第一次請求訂閱時subscriber告訴hub的,也可以是hub自己決定的。
3: 如果subscription request請求中並未設定hub.lease_seconds,說明是打算永久訂閱,那麼hub保持心跳的策略是:
訂閱過期前,hub會主動給subscriber重新發乙個確認請求,要求subscriber再次確認是否訂閱。 在這個確認請求中,所有引數與verification請求的一樣,只是challenge code是新的。
所以,subscriber不需要專門處理automatic subscription refreshing問題,因為第一是hub主動發起是否繼續訂閱的請求,第二subscriber還是按照慣例回覆challenge code以及200 ok即可延續訂閱。
二、關於處理更新內容:
對於訂閱了google reader shared items的subscriber,當內容更新時,hub由於是「無狀態」的,所以第一次訂閱時hub會傳送過來這個shared items feed的所有資料,通常是8條資料。
之後通常它只會把最新shared的那篇文章傳送過來,這就說明它還是有狀態的。
hub server儲存狀態也是有一定的時間限制的,假如某乙個使用者長時間沒有分享過文章,比如睡覺去了,那麼第二天他再次分享文章時,hub會把所有資料(8條)都推送過來。這說明在一段時間內,比如一小時內,hub快取了推送給subscriber的資料狀態,過期就清了。hub 不再記得曾經給你傳送過哪些資料。
舉例,某一次hub傳送過來的request.content為:
<?xml version="1.0" encoding="utf-8"?>
<feedxmlns="" xmlns:media="" xmlns:idx="urn:atom-extension:indexing" idx:index="no" xmlns:gr="">">google reader
tag:google.com,2005:reader/user/15221435823542888940/state/com.google/broadcast
cpbs2qqhq5wc/public/atom/user%2f15221435823542888940%2fstate%2fcom.google%2fbroadcast" rel="self"/>zhengyun
2009-09-24t15:22:57z
<entrygr:crawl-timestamp-msec="1253805777401">tag:google.com,2005:reader/item/adfecf99f68d6292
【幸福課】心靈之旅:如果不知道真正想做的事情,你可以 | 幸福課_傳播有益的心理學
2009-09-24t15:22:57z
2009-09-24t15:22:57z
" type="text/html" rel="alternate"/>" rel="related" title="www.xingfuke.net"/>">現在沒有方向和答案的話,那麼先讀100本書、鍛鍊好身體,這兩件事永遠都是對的、永遠都是立馬應該去做的。
(author unknown)
tag:google.com,2005:reader/user/15221435823542888940/source/com.google/link
www.xingfuke.net
" type="text/html" rel="alternate"/>
anyway,subscriber要:
1:接到資料,最好非同步處理(解析、入庫等),要確保盡快返回,尤其是當你接收的是shared items feed xml 時,以防萬一資料位元組數太大。
2:雖然hub有狀態,但你自己也要保證有狀態,知道哪些items是新發布的,畢竟hub是否只推送最新分享的文章取決於google reader使用者的分享頻率。
3:http://server/subscribe/keso ,這樣,當你收到資料時,不需要解析feed xml內容就知道這是哪乙個shared items的更新。
三、hub何時通知你有更新
並不是像通常想像的,你一在google reader裡點選了某篇文章的shared按鈕,hub就立刻推送更新到subscriber。未必。
多數情況下,幾秒鐘就push新資料過來了。但有時,可能是hub的策略設定,是兩次shared點選才會觸發一次hub推送,推送的資料內容就是這個批次分享的那兩篇文章。
鄭昀@玩聚sr 20090924 北京報道
對康託展開的一些心得
康托展開 對於全排列中形成的乙個陣列,可以知道他是排列中的第幾種.具體公式為 x an n 1 an 1 n 2 ai i 1 a2 1 a1 0 其中,a為整數陣列,並且0 ai一下是一些 比如表示1,2,3,n的排列如 按從小到大排列一共6個。123 132 213 231 312 321 代表...
對synchronized this 的一些理解
一 當兩個併發執行緒訪問同乙個物件object中的這個synchronized this 同步 塊時,乙個時間內只能有乙個執行緒得到執行。另乙個執行緒必須等待當前執行緒執行完這個 塊以後才能執行該 塊。二 然而,當乙個執行緒訪問object的乙個synchronized this 同步 塊時,另乙個...
對synchronized this 的一些理解
一 當兩個併發執行緒訪問同乙個物件object中的這個synchronized this 同步 塊時,乙個時間內只能有乙個執行緒得到執行。另乙個執行緒必須等待當前執行緒執行完這個 塊以後才能執行該 塊。二 然而,當乙個執行緒訪問object的乙個synchronized this 同步 塊時,另乙個...