关于简单实现数据推送的思路与实现

    前段时间公司有个项目涉及到了来电咨询提醒,也就是来到弹屏这方面,据我所知以往的项目并没有涉及到弹屏这块这次是客户的需求。由于项目了集成了一个第三方管理来电语音卡的程序。这程序好像是VB写的吧,先说下,这个只是负责将通话的电话号码通话时间,通话线路信息存储到项目所制定的数据库的一张calllogl表中,也可以这样理解数据库里calllogl插入一条记录即可理解为有新的来电,, 之后我去网上找了找方法大都是支持internet的第三方接口,的数据推送。考虑项目本身只能用于内网不现实,当然之前自己也有思路 就是通过大家都知道的  ajax 轮询,就是每隔1-2秒都去数据库查到有没有新的记录然后在前台弹出一个类似dialog ,后来也实现了感觉效率有低,存在电话1-2秒  进来多通电话的情况。这样就出错了(忘记说了,来电语音卡同时管理多个电话线路不是单指1路) 而且耗费内存严重可以想象 项目跑一天  不管客户上下班,都要去数据库查询无数次,后来通过研究websocket 我发现这可以提高此项功能效率,首先他是脱离浏览器 是基于 TCP 的一个握手协议 属于长链接,之前的ajax轮询虽然也实现了与数据库的链接 其实是一个假长链接,服务器主动向客户端发送实时信息;浏览器不断的向服务器请求数据并判断数据是否为最新数据,,这2种情况 效率 高下立判。

然而websocket 有个致命的缺点,说的严重,就是浏览器的兼容性能只支持IE10以上,webserver 也只支持tomcat7 以上,尴尬客户的运行环境还在IE8 , 考虑到客户环境 办公的数据信息的安全性 让客户升级 操作系统和浏览器 不现实,所以这个websocket被否决,(话说在我本地调试成功,去了现场尴尬了,所以说以后开发首先要了解客户的PC环境)


再后来 node.js  socket.io实现数据推送,实际上这 socket.io只是node 的一个模块  官网上也有demo 类似与 聊天室的 可以实现用户的私聊 公共广播等功能,聊天的过程实际上就是数据的推送,  这次张记性了首先先看他 的兼容性。嗯,!支持IE 8 甚至IE6 , 说道node  其实就是js 代码运行在 服务端 。而这服务端采用的事谷歌的V8引擎 , 而且自己集成了运行环境,不需要webserver第三方进行管理部署。。,,,话不多说具体功能已经实现。


具体思路是 利用数据库的触发器   写个了一个触发执行  http请求的一个脚本,大概意思就是 表有新数据插入,就会执行一个存储过程,url参数做了处理包含 客户机IP信息和来电号码+线路号码              而之前的那个node socket.io 改编的服务负责接收http请求  解析参数 分析 业务逻辑 运用  io.emit(ip,msg);  方法实现对不同客户机实现弹屏操作 。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值