关于页面实时通讯的困惑,求助!

gbk8290 2014-06-28 10:12:50
在使用微信网页版本登陆中,我们经常看到的一幕:
用手机扫描一下PC端微信网页版登陆界面的二维码,在微信上确认一下,PC端就能登陆了;
整个过程是实时的,我想了解一下,
1 他们之间的通讯是怎么建立的,使用什么技术?
2 现在我开发一个业务系统,需要到实时数据展示,当客户下单,后台怎么实时获取数据呢?

之前想到使用JS加定时器来实现刷新,但是我觉得这个是个不得已的解决方法,较为耗资源
各位朋友有什么好的建议?谢谢。
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2014-06-29
  • 打赏
  • 举报
回复
现实中的HTTP长轮询,因为Keep-Alive的存在基本都是TCP长连接,只不过是套上了HTTP协议。 HTTP长轮询基本都是采用专用域名甚至是随机子域名来解决连接数问题。 而且多数HTTP长轮询都不是AJAX请求,那样可能影响某些浏览器的加载状态。 交互操作界面怎么就莫名其妙的与HTTP长轮询冲突?呵呵。。。
threenewbee 2014-06-28
  • 打赏
  • 举报
回复
用signalr http://bbs.csdn.net/topics/390793481
  • 打赏
  • 举报
回复
引用 楼主 gbk8290 的回复:
2 现在我开发一个业务系统,需要到实时数据展示,当客户下单,后台怎么实时获取数据呢?
这显然不适合用到交互操作界面上。你看这个所谓的微信界面界面,就是个典型的“死机界面”,或者叫做“傻瓜挂起”界面。而不是一个业务交互操作界面!
  • 打赏
  • 举报
回复
给你打个比方。假设通过手机给另外一个人打电话,我们可以立刻开始打过去,而(几乎)没有延迟。如果对方没接电话,那么通话就会很快自动被移动公司给掐断。然后手机显然还有一个“暗地里的”消息推送功能,负责推送一些底层的消息,这时我们手机用户通常根本感觉不到的,不能直接使用。 现在,如果你打电话到某个特别的号码,并且对方似乎也没有坐席接起来你的这个电话,那么你的这个通话会被hang了直至28分钟以后才被对方掐断。注意是“对方”掐断,而不是移动电话公司切断了联系。这显然就是普通的拖延战术,并不是说它动用了手机的什么后台消息推送机制,也不是说这是什么长连接。
  • 打赏
  • 举报
回复
把一个http请求叫做“长连接”这是不对的。服务器可以暂时“挂起”一个http请求,然后30秒钟之后才写出Respose信息,这有什么新奇的呢?这跟长连接是两码事,跟comet也是两码事。 长连接是指多次反复地进行双向通讯,而并不断开。 而所谓comet是指浏览器有一个单独的http请求,专门用户读取web服务器端给出的“事件通知”消息。如果服务器端没有事件通知,就会一直挂起,直到客户端http请求超时(或者服务器返回一个信息),然后客户端会发起另外一个这类请求。由于ie等浏览器只能为一个页面占用两个http通道,所以comet对于有些页面是一个灾难性的设计,会让页面上的各种资源文件加载速度变得很慢,而且更容易卡死。 如果仅仅是单个http请求被web服务器挂起了,这既不是长连接,也不是comet。这就是一个最普通的http请求而已。 如果你监视一下网页的http通讯,可以看到针对“微信登录”的请求每当持续27、28秒时每一次服务器都会返回“none”,然后网页就会再次发起一个Ajax请求。
by_封爱 2014-06-28
  • 打赏
  • 举报
回复
websocket或者comet很容易办到的

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧