socket.io客户端对事件处理相当优雅,和weboscket的有限的javascript接口差不多一致好看,但可以支持更多的自定义事件:
使用了EventBus(事件总线)方式可以很好的处理事件订阅者/事件的发布者解耦,发布者不知道订阅者,订阅者只需要自身注册,等待通知便可。EventBus是一种简单,高效,优雅,良好的客户端架构方式。嗯,还好,javascritp本身支持函数作为参数进行传递,要不还是很麻烦的。
构建一个最简单的EventBus javascript库,也不难:
简单不到40行代码,提供了事件订阅,事件取消,事件广播/发布等,虽简单,但已经满足最简单的页面端EventBus模型,可以一窥全貌了。
客户端使用事件总线代码:
看着和socket.io的客户端使用方式有所类似,但socket.io的处理方式复杂多了,并且多了一些内置的事件,这里不过是简化了很多。
嗯,有空谈一谈JAVA是如何做到事件总线(EventBus)的。