请教“人人网”也就是校内网的“网页即时聊天”是采用何种技术实现的? 请教“人人网”也就是校内网的“网页即时聊天”是采用何种技术实现的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 校内网整体架构应该是用java实现的(它的风格类似于Facebook,但facebook用php)。 看百度的web网页聊天器,也很强,只不过有的浏览器不支持,一直报js错误 我一开始也是认为是ajax,但是后来有觉得好像用了某些面向服务的技术,因为网页本身并没有发出HTTP请求,而是被动接收了别人的消息。不知道我的想法对不对,真希望有高人来指点啊。 http是请求/响应模式,是客户端和服务器之间的通讯,而聊天时时客户端至服务器再至客户端,我觉得不像你简单说了个HTTP这么简单的。 应该是ajax,不断刷新那一小块区域,你就能不断收到消息,对系统也没什么影响 基于网页的即时聊天,一般两种做法,一服务端向客户端“推”,二客户端从服务端“拉”,不管是“推”和“拉”,以前很多都采用定时器的方式来处理,但采用定时器方式存在延时情况,不能很“即时”。现在有一种比较流行的方式,客户端通过长连接的方式从服务端拉数据,可关注一下Comet技术,IBM网站上有相关的文章http://www.ibm.com/developerworks/cn/web/wa-cometjava/index.html Comet的技术文章http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ 不是Comet,就是AJAX当然也有可能flex 如果这个也麻烦的话,看下google wave吧。 利用 服务器推技术的comet技术 DWR框架有现成的例子可以参考的. 我做了个微博,就是ajax刷新,每添加,删除,调用一次ajax取出5跳数据,我是用了ajax分页 每页取5条. ajax就是部分刷新,其他页包含就可以, 不好说,还有人人桌面这个东西,是个桌面程序,它能跟web端聊天,类似于桌面QQ跟webQQ聊天那样 桌面程序,web聊天都是跟数据库交互,ajax完全可以解决. 对 dwr上有这种即时聊天的封装,不知道原理是不是实时刷新。 聊天不应该是用 socket 吗? 确实是Comet用Firebug看了一下,人人的页面会一直保持一个请求到这个URLhttp://wpi.renren.com/comet_get?mid=0&r=0.22782801575697498该请求一直不释放,有新消息来会写入XML数据客户端一旦拿到数据就发起另一个请求理论上说发起另一个请求的时候应该通知服务器把之前的请求关掉,但是用Firebug下显示的之前的请求并没有关掉,也许是服务器已经释放资源但是没有给响应,或者是Firebug的问题?我也不清楚,继续求解 刚刚用Chrome看了一下,http://wpi.renren.com/comet_get这个请求得到数据以后确实返回了200并且发起一个新的请求 原名校内网,一种用真实姓名进行交流的通讯工具,类似于Facebook。话说用了这么久的人人,都没有认真想过即时聊天是怎么实现的,强烈关注中。 其实关键的不是前端技术,而是后端server的实现,普通的web server承载不了那么大的并发,需要做些工作改进 DWR框架可以实现,一种推送的技术。 - - 用的推模式的comet 服务器端 推送数据到客户端的 可以应用flex的消息服务 消息层次在java代码与页面中 消息模式轮询和消息流2中 轮询较慢,流可以及时发送接收,和ajax结合可以把flex编译的swf文件高度设置成0js也可以调用,搂主感兴趣可以查查,flex java 消息服务 不可能,http是基于请求响应的协议,不请求就不会有相应。 同意:现在又很多都用这种方式,推和拉技术,dwr里边提供了这样的例子,可以参考下。 Comet~推技术 我也发现这个现象,看评论的时候,看你跟我发现的一样,我也很奇怪,长期保持http连接,不是应该会有个http失效时间吗,可是我看这个连接始终保持着的。 我记得socket通信就可以,不过不知道大数据行不行,学习时19个人试过,不过都是发到服务器上显示。刚在网上看了dwr的一个人的例子:http://www.fengfly.com/plus/view-171609-1.html ajax 但是不断的刷新会对数据库有冲击,所以有解决这个问题就ok 了解决这个问题通常用的是 在数据表前面加一层缓存库这样就可以很实现了, 公司已经开发出来的,效果不错 基于Bayeux Protocol的comet技术最新的Servlet 3.0已经内置了comet组件cometD的开源项目已经提供了JQuery、Dojo的前台JavascriptAPI支持,一个简单的介绍和接触,请看这里 comet introduction 求助:关于公司和部门的排序问题 后台Action怎么取到层里面的值? hibernate的多个sessionFactory关闭连接的问题 二进制数据传输问题 javascript不能执行!!!!!!!,帮助 可不可以把一段脚本写到类里面 不清楚的错误!!! 有关服务器配置 新手求教: 有关servlet和Applet通讯的问题??请求帮助! 如何实现多服务器间内存数据同步 一个域名可以多个连接项目吗
用Firebug看了一下,人人的页面会一直保持一个请求到这个URL
http://wpi.renren.com/comet_get?mid=0&r=0.22782801575697498
该请求一直不释放,有新消息来会写入XML数据客户端一旦拿到数据就发起另一个请求理论上说发起另一个请求的时候应该通知服务器把之前的请求关掉,但是用Firebug下显示的之前的请求并没有关掉,也许是服务器已经释放资源但是没有给响应,或者是Firebug的问题?我也不清楚,继续求解
并且发起一个新的请求
原名校内网,一种用真实姓名进行交流的通讯工具,类似于Facebook。
话说用了这么久的人人,都没有认真想过即时聊天是怎么实现的,强烈关注中。
同意:现在又很多都用这种方式,推和拉技术,dwr里边提供了这样的例子,可以参考下。
刚在网上看了dwr的一个人的例子:
http://www.fengfly.com/plus/view-171609-1.html
解决这个问题通常用的是 在数据表前面加一层缓存库这样就可以很实现了, 公司已经开发出来的,效果不错
最新的Servlet 3.0已经内置了comet组件
cometD的开源项目已经提供了JQuery、Dojo的前台Javascript
API支持,一个简单的介绍和接触,请看这里 comet introduction