pushlet基本流程

2021-09-30 06:17:47 字數 1479 閱讀 9364

客戶端長輪詢(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 首先要有必備的素質,包括溝通能力 表達能力 邏輯思維能力 團隊協作能力 處理日常事務和突發事件...