socket.io客戶端對(duì)事件處理相當(dāng)優(yōu)雅,和weboscket的有限的javascript接口差不多一致好看,但可以支持更多的自定義事件:
使用了EventBus(事件總線)方式可以很好的處理事件訂閱者/事件的發(fā)布者解耦,發(fā)布者不知道訂閱者,訂閱者只需要自身注冊(cè),等待通知便可。EventBus是一種簡單,高效,優(yōu)雅,良好的客戶端架構(gòu)方式。嗯,還好,javascritp本身支持函數(shù)作為參數(shù)進(jìn)行傳遞,要不還是很麻煩的。
構(gòu)建一個(gè)最簡單的EventBus javascript庫,也不難:
簡單不到40行代碼,提供了事件訂閱,事件取消,事件廣播/發(fā)布等,雖簡單,但已經(jīng)滿足最簡單的頁面端EventBus模型,可以一窺全貌了。
客戶端使用事件總線代碼:
看著和socket.io的客戶端使用方式有所類似,但socket.io的處理方式復(fù)雜多了,并且多了一些內(nèi)置的事件,這里不過是簡化了很多。
嗯,有空談一談JAVA是如何做到事件總線(EventBus)的。