1 pushlet自帶事件源分析
pushlet
源**中自帶了一些事例,對這些例子的分析有助於編寫自己的**。
pushlet
源**提供了一種事件源機制,即將一些服務作為事件源,通過這些源產生各種各樣的事件,然後加入到相應的
session中。
1)servlet
初始化eventsourcemanager
。在pushlet
這個servlet
初始化時,會對
sessionmanager
、dispatcher
進行例項初始化,它們是通過單件模式構造的;然後呼叫
eventsourcemanager
這個工具類(稱為工具類是因為它由一組
static
方法組成,每乙個方法單獨完成一項功能)讀取
source.properties
配置檔案,對該配置檔案中的
source
類進行初始化。
pushlet
源**中配置了五個事件源類,且都是一內部靜態類,載入後直接呼叫相應的方法,而它們又被設計為執行緒,所以在系統初始化後它們就直接在系統中不停地以執行緒方式執行。 2
)事件源**分析:
eventsource
:事件源介面;
eventpullsource
:抽象類,實現了
eventsource
和runnable
,定義了抽象方法
getsleeptime()
和pullevent();
run()
方法中實現了將事件分發到相應的
session;
pingeventpullsource
:繼承了
eventpullsource
抽象類,實現了兩個抽象方法,即執行緒睡眠時間和產生
event。
3)核心是
dispatcher
將產生的事件推送到各個
session
中。二次開發時,如果不是以這種系統源的方式推送,可以自己編寫相應的事件生成器,然後推送到相應的
session中。
2二次開發
2.1二次開發需求
pushlet
的需求,也就是需求以「推送
」的方式向客戶端傳送的資訊,主要的有伺服器端的一些服務、實時類資訊推送的,如天氣、實時短訊息、一些定製類服務等。
2.2二次開發關鍵點
pushlet
二次開發過程中關鍵一點是如何構建資料事件源以及如何將事件推送給特定的客戶端。因此可能需要修改的關鍵點有: 1
)事件源。這裡的事件源可以是
pushlet
定義的eventsource
,也可以是根據特定業務需求產生的事件源。其實所謂的事件源即如何構建事件,較多的情況及新建
event
物件。 2)
session
修改。預設情況下
session的id
都是隨機產生的,但是實際業務需求可能是要求將
session
與特定的使用者繫結在一起,因此該標識可能就需要另外修改。 3
)特定推送。這裡的推送方式可能有針對特定使用者、特定使用者群、廣播推送等,這需要按實際進行修改。 4
)分布式處理。
pushlet
適合在同一臺伺服器上執行,但是如果使用者數量大,可能需要將使用者進行分組置於不同的伺服器內,而不同的伺服器間如何通訊也是需要另外編碼實現的。
基實pushlet
只是實現了一種框架,其內包括了伺服器端的池模式及
ajax
實現的伺服器推技術,因此其技術難度實際上並不是很大,詳細閱讀一下源**即可分析清楚。
如有感興趣的朋友,大家可以一起討論,討論!
postek二次開發 POSTEK二次開發介面
例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...
mcms二次開發 YzmCMS二次開發手冊
摘要 yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有一.yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有乙個統一的入口...
mcms二次開發 YzmCMS二次開發手冊
yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有乙個統一的入口。一 基本目錄結構.根目錄 cache 快取目錄 必須可寫入 common 全站公共目錄 必須可寫入 uploads 預設上傳目錄 必須可寫入 yz...