`
dreaminjava
  • 浏览: 35105 次
  • 性别: Icon_minigender_1
  • 来自: 武汉→北京→武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何做一个最完美的实时数据传输程序

阅读更多
               如何做一个最完美的实时数据传输程序  

   年底公司没什么事,看到同事们都在刷各个不同的二手火车票网站,因为要得到最新信息要不停的F5,所以我想做一个实时更新最新数据的web程序,反正也没什么事情做。
    我的思路是:利用ajax每秒访问数据库一次,如果有最新的数据就返回最新数据,完成小demo,功能也实现了,但是同事觉得我的思路不好,因为不停的访问数据库会影响效率,公司是做税务的,效率总是放在第一位的。
     同事也提供了一个思路,利用ajax每秒访问后台但是不允许数据库,利用oracle的触发器,如果有新数据插入就允许访问相关数据库数据。
     不知道能否用触发器控制一段java代码,这个暂且不说,就算可以实现效率会提高多少?
     不知道大家是否有什么看法和新的思路,怎么样才能做一个最完美的实时数据传输程序。






ps:大家新年快乐,希望那些没买到票的都能买到票,能够顺利的回家过年。
分享到:
评论
7 楼 hax 2008-03-03  
如果你只是担心数据库的压力,而不在乎web服务器的压力(通常确实如此),那没有必要用其他技术,只需要在web服务器上合理的做缓存就可以了,比如你的web服务器程序保持cache是5秒,只有超过5秒才会重新访问一次数据库。
6 楼 mickeyccq 2008-03-03  
利用二楼的技术应该可以了。DWR2.0就是用的Comet技术进行事件触发推送消息 的。
5 楼 mickeyccq 2008-03-03  
利用二楼的技术应该可以了。DWR2.0就是用的Comet技术进行事件触发推送消息 的。
4 楼 Sing 2008-02-15  
你试http长连接Comet服务器推技术,这个是不断地建立30秒长的连接,相当于跟服务器建立了socket连接,是属于实时数据提取的.
http://www.examda.com/Java/zhuangye/20070908/113416646.html
3 楼 rasonyang 2008-02-15  
JavaScript可以通过Extjs实现OBserver模式
然后,就是通过Applet或者DWR Reverse ajax,
让Server fire json Event让javascript onEvent
2 楼 一杯白开水 2008-02-07  
ls一下子就一片代码, 像我这样没用过ajax的人看得累啊.
能不能把你的实现原理描述一下?
1 楼 rasonyang 2008-02-02  
<p>我的实现思路如下:</p><p> 实现通过DWR Reverse Ajax调用EXTJS的Observable Class(Java CODE)</p><p>Collection&lt;ScriptSession&gt; sessions = serverContext.getScriptSessionsByPage(pageUrl);<br/>        logger.debug("the page:{} url's session size is {}", pageUrl,sessions.size());<br/>        ScriptBuffer script = new ScriptBuffer();<br/>        script.appendScript("cti.fireVoiceEvent(")<br/>          .appendData(event)<br/>          .appendScript(");");<br/>        logger.debug("the script is {}", script);<br/>        for(ScriptSession session:sessions){<br/>            logger.warn("session id is {}", session.getId());<br/>            session.addScript(script);<br/>        } </p><p>cti.js如下:</p><p>Ext.namespace('cti');<br/>cti.Voice = function(){<br/>        this.addEvents({<br/>        "dialing" : true,<br/>        "ringing" : true,<br/>        "established" : true,<br/>        "released" : true<br/>    });<br/>    <br/>    <br/>        <br/>};<br/>Ext.extend(cti.Voice, Ext.util.Observable);<br/>cti.VoiceCallBack = new cti.Voice(); <br/>cti.fireVoiceEvent = function(event){<br/>    var runFireEvent = cti.VoiceCallBack.fireEvent.bind(cti.VoiceCallBack);<br/>    runFireEvent(event.name,event);<br/>} </p><p> </p><p>然后在Voice.js处理,各种Event事件如下:</p><p>Ext.onReady(function(){<br/>    <br/>    <br/>    <br/>    var targetDN = Ext.get('targetDN');<br/>    var thisDN = Ext.get('thisDN');<br/>    var connId = Ext.get('connId');<br/>    <br/>    //make call<br/>    var makeCallButton = Ext.get('makeCallButton');<br/>    var onMakeCall = function() {<br/>        cti_voiceService.makeCall(thisDN.getValue(),targetDN.getValue());<br/>    };<br/>    <br/>    makeCallButton.on('click',onMakeCall);<br/>    <br/>    //answer call<br/>    var answerButton = Ext.get('answerButton');<br/>    var onAnswer = function() {<br/>        cti_voiceService.answer(thisDN.getValue(),connId.getValue());<br/>    };<br/>    <br/>    answerButton.on('click',onAnswer);<br/>    <br/>    //release call<br/>    var releaseButton = Ext.get('releaseButton');<br/>    var onRelease = function() {<br/>        cti_voiceService.release(thisDN.getValue(),connId.getValue());<br/>    };<br/>    <br/>    releaseButton.on('click',onRelease);<br/>    <br/>    //logout<br/>    var logoutButton = Ext.get('logoutButton');<br/>    var onLogout = function() {<br/>        cti_voiceService.release(thisDN.getValue(),connId.getValue());<br/>        cti_voiceService.logout(thisDN.getValue());<br/>    };<br/>    <br/>    logoutButton.on('click',onLogout);<br/>    <br/>    Ext.EventManager.on(window, 'unload', function() {<br/>       cti_voiceService.release(thisDN.getValue(),connId.getValue());<br/>        cti_voiceService.logout(thisDN.getValue());<br/>    });  <br/><br/>    <br/>    //onRinging Event Handler</p><p> var onRinging = function(ev){</p><p>     cti.onStateChange(ev); </p><p>     document.voice.connId.value = ev.connID;<br/>        document.voice.thisDN.value = ev.thisDN;<br/>        document.voice.answerButton.disabled = false;<br/>        document.voice.releaseButton.disabled = true;<br/>    };<br/>    <br/>    cti.VoiceCallBack.on('ringing',onRinging);<br/>    </p><p> //onDialing  Event Handler<br/>    var onDialing = function(ev){<br/>        cti.onStateChange(ev);<br/>        document.voice.connId.value = ev.connID;<br/>        document.voice.answerButton.disabled = true;<br/>        document.voice.releaseButton.disabled = true;<br/>    };<br/>    <br/>    cti.VoiceCallBack.on('dialing',onDialing);<br/>    <br/>    var onEstablished = function(ev){<br/>        cti.onStateChange(ev);<br/>        document.voice.connId.value = ev.connID;<br/>        document.voice.answerButton.disabled = true;<br/>        document.voice.releaseButton.disabled = false;<br/>    };<br/>    <br/>    cti.VoiceCallBack.on('established',onEstablished);<br/>    <br/>    var onReleased = function(ev){<br/>        cti.onStateChange(ev);<br/>        document.voice.connId.value = ev.connID;<br/>        document.voice.thisDN.value = ev.thisDN;<br/>        document.voice.answerButton.disabled = true;<br/>        document.voice.releaseButton.disabled = true;<br/>    };<br/>    <br/>    cti.VoiceCallBack.on('released',onReleased);<br/>    <br/>    <br/>    cti.reverseAjax();<br/>    <br/>    <br/>    <br/>    <br/>})</p><p> </p><p>这只是其中一种实现方式而已。Reverse ajax还可以通过NIO Socket向IE/FF的Applet Socket Client发送JSon Event,由Applet执行当前页面的fireEvent。</p><p>可以通过Spring,配置不同的Reverse ajax实现方式。如果有什么不理解的,请随时找我。 rasonyang@hotmail.com</p>

相关推荐

    PCI 总线高速DMA 数据传输驱动程序设计

    PCI总线标准与PCI9054的完美结合。

    .NET Core商场微信小程序系统的设计与实现

    程序采用MySQL数据库管理系统作为数据库,利用MySQL的高效性与简易性可以使程序更快地渲染数据,传输数据。该系统具有购买商品、查看商品、查看订单、修改收货地址等功能,可以完美地解决用户无需下载单独地APP且...

    e2eSoftVSC1.5完美破解

    e2eSoft VSC 是一个虚拟的声卡驱动程序,它像一个真正的声卡一样工作,您可以用它来录制或广播您“播放”出来的声音。 您也可以使用它来创建多个虚拟声卡实例来满足您的特殊要求。 现在就下载免费试用吧! ...

    【最新版】Syncthing-1.7.0-1.dmg【亲测可用】最好的连续的文件同步程序

    同步是一个连续的文件同步程序。它可以在两台或多台计算机之间实时同步文件,并提供安全保护,以防窥视。您的数据本身就是数据,您应该选择将数据存储在何处,是否与第三方共享以及如何通过Internet传输。 私人的。...

    基于51单片机的锅炉监测(压力,温度)仿真

    本系统利用LM016L小型液晶显示屏、DS18D20温度传感器、ADC0832模数转换器以及压力传感器,实现了一个锅炉检测压力和温度的实时监控系统。系统通过DS18D20温度传感器实时采集锅炉内部的温度数据,并将其传输至系统...

    旨在与 OpenBCI硬件一起使用的 Python 软件库_python_代码_下载

    这些板都使用不同的物理技术将数据传输到蓝牙或 wifi 等计算机 开发人员希望将 OpenBCI 与其他平台和接口集成 因此,即使是最优秀的开发人员也想将 Python 与他们的 OpenBCI 板一起使用,他们也会为从哪里开始而...

    最新版Radmin3.4完美破解版-隐藏任务栏图标

    Radmin (Remote Administrator)是一款屡获殊荣的远程控制软件,它将远程控制、外包服务组件、以及网络监控结合到一个系统里,提供目前为止最快速、强健而安全的工具包。  它有以下特点:  1.运行速度快。  2....

    无需重启即可在 Mac 上运行 Windows 的应用程序.rar

    是功能强大灵活度高的虚拟化方案,无论您是需要运行无 Mac 版本的 Windows 程序,还是需要从 PC 切换到 Mac 并需要传输数据, 都能满足您的需求。 适用于 OS X、Windows 10、8.1 和 7、Google Chrome™、Linux 和 ...

    nigma是您完全恢复删除或丢失的数据从您的iPhone, iPad或iPod快速和有效

    它是一个智能的应用程序,提供了一个完美的数据恢复解决方案,通过彻底扫描您的设备,iTunes备份或iCloud帐户,以找到各种类型的数据,如联系人,呼叫历史,消息,iMessages,笔记,日历事件,照片,视频和更多。...

    vc++ 应用源码包_1

    压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java源码包2

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包3

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包4

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。...

    破解版为最新完美版。支持WIN7隐藏任务栏图标

    Radmin (Remote Administrator)是一款屡获殊荣的远程控制软件,它将远程控制、外包服务组件、以及网络监控结合到一个系统里,提供目前为止最快速、强健而安全的工具包。  它有以下特点:  1.运行速度快。  2....

    Serv-U v10.1.0.1 企业金版绿色已注册版下载|最新完美破解版

    * 数据传输过程中实现自动即时 (on-the-fly) 压缩。 * 通过详细的用户权限和访问限制保障全面安全。 * 远程管理。 * 在 Windows 2000/XP/2003/Vista 中作为 Windows 系统服务运行。 * 自动删除过期的临时账户。 * ...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

Global site tag (gtag.js) - Google Analytics