輪詢客戶端的實現(xiàn)
摘要: 服務器端給第一個客戶端發(fā)送notification,然后在限定時間內(nèi),等待客戶端作出回應—向服務器發(fā)送request。如果客戶端一直沒有回復,服務器會在到達限定時間后,向第二個客戶端發(fā)送notification。如果客戶端在限定時間內(nèi)回復,服務器端放棄再給其他客戶端發(fā)送消息。
Design
服務器、客戶端使用socket發(fā)送和接收信息
發(fā)送端存在一個客戶端列表,每次發(fā)送一給一個客戶端,發(fā)送后,向Helper發(fā)送添加該客戶端id的請求。
客戶端收到信息會向Helper發(fā)送刪除該id的請求。
Helper收到add時,啟動一個ScheduledExecutorService類的schedule,延時啟動一個線程,并將該schedule緩存。remove時,從緩存里取出schedule并停止它。如果在延時時間內(nèi),線程沒有被停止,它會被執(zhí)行:從緩存中取出,告訴服務器向下一個客戶端發(fā)送請求。
閱讀全文