客戶端長輪詢(pull,poll)
stream, (在subscriber.fetchevents})
流程:
pushlet.dorequest
1. 建立會話
2. controller.docommand
//根據客戶端的命令進行命令分發
啟動或停止subscriber,設定返回的命令等,若是publish事件-->
dispatcher.getinstance().unicast(acommand.reqevent, to); || dispatcher.getinstance().multicast(acommand.reqevent);
//分發完畢執行,handle response back to client
if (eventtype.endswith(protocol.e_listen) ||
eventtype.equals(protocol.e_refresh)) else
入庫dispatcher.getinstance().multicast-->
multicast或unicast觸發
遍歷所有的會話,進行呼叫
visitmulticast || visitbroadcast
判斷當前會話的subscriber是否符合條件,符合就呼叫-->
subscriber.onevent(e)
sessionmanager對event進行管理(agingtimertask),超時會話將被stop(),會話也會stop從屬於它的subscriber;
出庫長輪詢是sendcontrolresponse(acommand);
protected void sendcontrolresponse(command acommand) catch (throwable t)
}stream方式如下:
在subscriber.fetchevents{ while (isactive()){
// update session time to live
session.kick();
dequeueall();
//沒有事件就發心跳
//發到客戶端
clientadapter.push(events[i]);
note:
command建立clientadapter,同時把resq例項賦給它,對外的輸入都是由clientadapter完成
下面的圖**
pushlet 學習記錄
前兩天看了下pushlet2.0.4,總結了它的大概思路 客戶端主要使用ajax每隔100ms通過get方式傳送請求,請求入口為pushletservlet,在這主要是使用單例模式初始化了sessionmanager session管理器 這個session是它自己定義的實體類,生命週期通過time...
基本HTTP流程
http是hyper text transfer protocol 超文字協議 縮寫,主要負責伺服器與瀏覽器之間的通訊。http把客戶端瀏覽器的請求傳送到伺服器,並把相應的網頁內容由伺服器返回到客戶端瀏覽器。一次完整的http瀏覽器一般包括以下流程 1 開啟http連線,因為http是一種無狀態協議...
測試基本流程
整理日常測試工作中的基本流程,梳理測試思路 以下分三個方向說明不同專案的測試基本流程,一般包括需求評審 編寫測試大綱 測試用例 測試計畫 執行測試 過程匯報 測試報告 測試總結等。一 立項專案流程 1 1 首先要有必備的素質,包括溝通能力 表達能力 邏輯思維能力 團隊協作能力 處理日常事務和突發事件...