关于ZK框架的服务推实现,ZK3 和ZK5 有着很大的不同。这也是在small talk和how—to wiki里面看到的。
server-push服务推技术的兴起主要是因为http的无状态链接,导致服务端有什么信息, 比较难推到客户端。传统的ajax的形式,就是客户端不停的向服务端发出请求,来取得服务端的信息。现在server-push有多种方式, 有兴趣的可以去了解一下。ZK框架对于server-push也是实现了多种方式。
像第一篇文章里面那样, java 服务端完全有可能操作客户端的组件,服务端和客户端的紧密使得服务推在这里没有多大的作用,不过还是介绍一下吧。
ZK早期的的server-push实现方式:
其实现分为几个步骤:1,开启界面的server-push 2,创建服务端的java线程,并且把界面元素作为参数传递给java线程,主要是因为要不停的发信息给客户端所以开线程。 3,在java线程开启的时候,也一样要开启desktop的server-push,且在发送信息之前要使用Executions.active(desktop) ,将信息发送完成后,需要deactive,并且enable desktop的server-push功能。
特点:常规的服务端java对客户端进行控制的话,需要extends ZK框架里面的自带的composer类或者是Window类,以这种方式就可以传递desktop,操作其desktop,并且可以继承其他的类型,完成更多的功能。
案例:(参考官方提供)
a.zul 里面在zscript里面开启客户端desktop的server-push功能。开启java线程。(ps.使用zscript通过language属性指定可以嵌入并运行很多中脚本语言javascript等)
- //开启desktop的服务推
- if(!desktop.isServerPushEnabled()){
- desktop.enableServerPush(true);
- }
- XYModel xymodel=new SimpleXYModel();
- timeseries.setModel(xymodel);
- //开启服务端的java线程。并传递需要实时更新的组件。
- ins.ZKServerPush.StockEx.StockChartUpdate scp=new ins.ZKServerPush.StockEx.StockChartUpdate(timeseries);
- scp.start();
a.java
- public void run() {
- if (!_desktop.isServerPushEnabled())
-
- _desktop.enableServerPush(true);
- try {
- while (!_ceased) {
-
- Executions.activate(_desktop);
- try {
- updateChart();
- } finally {
- Executions.deactivate(_desktop);
- }
- Threads.sleep(2000);
- }
- } catch (Exception ex) {
- System.out.println(“error!!!!”);
- } finally {
- if (_desktop.isServerPushEnabled())
-
- _desktop.enableServerPush(false);
- }
- }
改进版:在上个案例中后台数据的改变就得改变组件形态并更新一番,在这使用SimpleListModelShare 可以在后台数据改变的时候,客户端组件自动更新。
1,指定哪个数据,stockModel.
- modelSharer = new SimpleListModelSharer(stockModel);
2,指定代理的桌面
- public ListModel getProxy(Desktop desktop) {
- return modelSharer.getProxy(desktop);
- }
当stockModel的数据改变的时候,组件中使用stockModel的也会更随改变。
近期常用的方式, 使用EventQueues在application、session等灵活的publish事件,同时又subscribe来监听,得到监听信息就改变客户端状态。这种方式客户端界面不用改变什么,也不用激活server-push。
这里的desktop不作为参数传递,使用Composer来监控客户端组件,如果有比较多信息需要实时的传递,比如聊天的项目,当a用户在聊天室里面发言, 其他的用户接受到a用户留言信息并显示, 可以使用EventQueues来发布(publish)a用户发言的事件,而其他用户则监听(subscribe)此事件,事件触发时并显示其a用户留言。
ZK框架的灵活是很不错的!
以上是我对ZK框架server-push的一点总结。有不对的地方,欢迎大家指正。
原文章地址 : http://every-best.iteye.com/blog/702283
分享到:
相关推荐
ZK框架学习总结.pdf
zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架
幸福象花一样 ZKZK REMIX_2---02.flp
SMC ZK2-ZSEA-A设置方法
zk-src-3.0.3-2008-01-31
ZK框架学习总结.doc zk的安装,zk eclipse
zk-Gmaps-src-2.0_10.zip zk-Gmaps-src-2.0_10.zip
ZK框架是一个用JAVA实现的简单但是功能强大的表现层框架。它包括了一个基于Ajax的事件驱动引擎、这也是它的最大特色。可以做到没有JavaScript,只通过ZUML(ZK User Interface Markup Language)这种标识语言即可做到...
ZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docxZK框架学习总结.docx
zk-6.5.0.zip ZK 6.5.0 Sep 12, 2012 * Features ZK-447: The file upload allows users to drag and drop local files (HTML5) ZK-1241: ZK Client Widget support swipe event for tablet/mobile device ZK-...
ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 中文技术文档ZK框架 ...
Zk的相关需要的类包和开发环境,请参考学习
ZK框架学习总结知识.pdf
ZK-quickstart-3.0.0-cn快速入门中文版
ZK框架学习总结终稿.pdf
使用zk框架的新闻发布系统 这是在网上找到的,为了学习而使用zk框架做的一个新闻发布的例子,可能会有些BUG,现在拿出来给大家分享一下,以便共同学习
2022年ZK框架学习总结定义.pdf
一个zk的demo,主要方面的信息,大家下载完以后就知道了 呵呵
ZK框架开发手册 ZK 7.0.5 Developer's Reference.pdf ZK框架开发手册 ZK 7.0.5 Developer's Reference.pdf
TPC-ZK-II微机接口实验系统正是在这种背景下推出的,该设备在TPC-ZK-II微机接口实验系统上配置了USB接口模块,直接与主机(PC)的USB接口连接,形成了一套完整的USB总线接口的微机接口实验系统。