当前位置:编程学习 > JAVA >>

请教“人人网”也就是校内网的“网页即时聊天”是采用何种技术实现的?

请教“人人网”也就是校内网的“网页即时聊天”是采用何种技术实现的? --------------------编程问答-------------------- 校内网整体架构应该是用java实现的(它的风格类似于Facebook,但facebook用php)。
--------------------编程问答-------------------- 看百度的web网页聊天器,也很强,只不过有的浏览器不支持,一直报js错误  --------------------编程问答-------------------- C --------------------编程问答-------------------- 不明白,来学习下! --------------------编程问答-------------------- 帮你顶! --------------------编程问答-------------------- 关注中... --------------------编程问答-------------------- 也想了解 --------------------编程问答-------------------- 想连接 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 路过 --------------------编程问答-------------------- 都说是ajax。。 --------------------编程问答-------------------- ajax吧。定时刷新。 --------------------编程问答-------------------- 我一开始也是认为是ajax,但是后来有觉得好像用了某些面向服务的技术,因为网页本身并没有发出HTTP请求,而是被动接收了别人的消息。不知道我的想法对不对,真希望有高人来指点啊。 --------------------编程问答-------------------- 有啥神秘的呀,网页,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/ --------------------编程问答-------------------- 如果时定时刷新的话,那它的刷新频率应该很高吧,因为我们发送了消息,基本上很快就能收到。这样就产生一个问题,校内网用户那么多,如果都很频繁的请求服务器,那对服务器的压力大的就可想而之了。 --------------------编程问答-------------------- 强烈关注中! --------------------编程问答-------------------- 我也想知道 --------------------编程问答-------------------- 用Ajax异步通讯啊 --------------------编程问答-------------------- 网络编程也需要吧 --------------------编程问答-------------------- 等等高手来解答 --------------------编程问答--------------------
引用 21 楼 cgs1999 的回复:
基于网页的即时聊天,一般两种做法,一服务端向客户端“推”,二客户端从服务端“拉”,不管是“推”和“拉”,以前很多都采用定时器的方式来处理,但采用定时器方式存在延时情况,不能很“即时”。

现在有一种比较流行的方式,客户端通过长连接的方式从服务端拉数据,可关注一下Comet技术,IBM网站上有相关的文章http://www.ibm.com/developerworks/cn/web/wa-cometjava/index.html

学习了,帮顶! --------------------编程问答-------------------- 新浪 直播奥运的时候也有这个,顶起啊,我也想学 --------------------编程问答-------------------- 不是Comet,就是AJAX

当然也有可能flex

--------------------编程问答-------------------- 呵呵,最简单的实现,聊天的时侯,为当前的会话,服务端创建一个GROUP,所有的客户端保存这个GROUP ID,然后每个人发送信息时,编号MESSAGE ID,发送到服务器端的GROUP下,
客户端通过GROUP ID轮询MESSAGE,获取没有读取的消息,不就可以了。
至于怎么轮询,看一下DWR的实现,反反复复就那么几种,不同浏览器的区别而已,毕竟HTTP只是个很简单的协议。

引用 15 楼 xu6chang1 的回复:
http是请求/响应模式,是客户端和服务器之间的通讯,而聊天时时客户端至服务器再至客户端,我觉得不像你简单说了个HTTP这么简单的。
--------------------编程问答-------------------- 如果这个也麻烦的话,看下google wave吧。 --------------------编程问答-------------------- 利用 服务器推技术的comet技术 --------------------编程问答-------------------- 人人网是什么网啊? --------------------编程问答-------------------- 学习。。。 --------------------编程问答-------------------- 学习.... --------------------编程问答-------------------- 用客户端监听能实现吗?(思路不知道能不能行) --------------------编程问答-------------------- 我也想了解 --------------------编程问答-------------------- DWR框架有现成的例子可以参考的. --------------------编程问答-------------------- 怎么没人说socket 呢? --------------------编程问答-------------------- 关注。。。呵呵。 --------------------编程问答-------------------- 你打入那什么人人网的内部就知道了 --------------------编程问答--------------------
引用 35 楼 qiuqiupeng 的回复:
人人网是什么网啊?

嗯 --------------------编程问答-------------------- 我做了个微博,就是ajax刷新,每添加,删除,调用一次ajax取出5跳数据,我是用了ajax分页  每页取5条. --------------------编程问答-------------------- 太可能是部分刷新 了 --------------------编程问答-------------------- ajax就是部分刷新,其他页包含就可以, --------------------编程问答--------------------
引用 13 楼 xu6chang1 的回复:
我一开始也是认为是ajax,但是后来有觉得好像用了某些面向服务的技术,因为网页本身并没有发出HTTP请求,而是被动接收了别人的消息。不知道我的想法对不对,真希望有高人来指点啊。

没有请求?
那就是上面哪位所说的“推”。。。??? --------------------编程问答-------------------- 怎么加关注呀,哈哈// --------------------编程问答-------------------- Socket?
引用 15 楼 xu6chang1 的回复:
http是请求/响应模式,是客户端和服务器之间的通讯,而聊天时时客户端至服务器再至客户端,我觉得不像你简单说了个HTTP这么简单的。
--------------------编程问答-------------------- 不好说,还有人人桌面这个东西,是个桌面程序,它能跟web端聊天,类似于桌面QQ跟webQQ聊天那样 --------------------编程问答--------------------
引用 51 楼 thc1987 的回复:
不好说,还有人人桌面这个东西,是个桌面程序,它能跟web端聊天,类似于桌面QQ跟webQQ聊天那样

桌面程序,web聊天都是跟数据库交互,ajax完全可以解决. --------------------编程问答-------------------- 让我第一个想到了socket --------------------编程问答-------------------- 人人网好像是用struts做的 --------------------编程问答-------------------- 对 dwr上有这种即时聊天的封装,不知道原理是不是实时刷新。 --------------------编程问答-------------------- 路过
JF~ --------------------编程问答-------------------- 来学习下
--------------------编程问答-------------------- 聊天不应该是用 socket 吗? --------------------编程问答-------------------- 确实是Comet
用Firebug看了一下,人人的页面会一直保持一个请求到这个URL
http://wpi.renren.com/comet_get?mid=0&r=0.22782801575697498
该请求一直不释放,有新消息来会写入XML数据

客户端一旦拿到数据就发起另一个请求

理论上说发起另一个请求的时候应该通知服务器把之前的请求关掉,但是用Firebug下显示的之前的请求并没有关掉,也许是服务器已经释放资源但是没有给响应,或者是Firebug的问题?我也不清楚,继续求解 --------------------编程问答-------------------- 刚刚用Chrome看了一下,http://wpi.renren.com/comet_get这个请求得到数据以后确实返回了200
并且发起一个新的请求 --------------------编程问答-------------------- 恩,我也想知道网页中的那种在浏览同一个网页时的人互相聊天的即时通讯技术是怎么实现的 --------------------编程问答-------------------- 一样,想要了解。关注下。 --------------------编程问答-------------------- 争论不休。。。 --------------------编程问答--------------------
引用 35 楼 qiuqiupeng 的回复:
人人网是什么网啊?


原名校内网,一种用真实姓名进行交流的通讯工具,类似于Facebook。
话说用了这么久的人人,都没有认真想过即时聊天是怎么实现的,强烈关注中。。。。 --------------------编程问答-------------------- 其实关键的不是前端技术,而是后端server的实现,普通的web server承载不了那么大的并发,需要做些工作改进 --------------------编程问答-------------------- Comet! --------------------编程问答-------------------- 关注   jf~ --------------------编程问答-------------------- 等待答案中。。 --------------------编程问答-------------------- DWR框架可以实现,一种推送的技术。 --------------------编程问答-------------------- 等待 答案 --------------------编程问答-------------------- 我也想了解 --------------------编程问答-------------------- --------------------编程问答-------------------- - - 用的推模式的comet   服务器端 推送数据到客户端的
--------------------编程问答-------------------- 应该是采用UDP吧,发送+广播 --------------------编程问答-------------------- 就是一个简单的聊天室啊。 --------------------编程问答-------------------- 问问人人网吧 --------------------编程问答-------------------- 可以应用flex的消息服务 消息层次在java代码与页面中 消息模式轮询和消息流2中 轮询较慢,流可以及时发送接收,和ajax结合可以把flex编译的swf文件高度设置成0js也可以调用,搂主感兴趣可以查查,flex  java 消息服务 --------------------编程问答--------------------
引用 13 楼 xu6chang1 的回复:
我一开始也是认为是ajax,但是后来有觉得好像用了某些面向服务的技术,因为网页本身并没有发出HTTP请求,而是被动接收了别人的消息。不知道我的想法对不对,真希望有高人来指点啊。

不可能,http是基于请求响应的协议,不请求就不会有相应。 --------------------编程问答-------------------- 关注中…… --------------------编程问答-------------------- 路过。。 --------------------编程问答-------------------- 感觉就是个ajax其他没什么 --------------------编程问答--------------------
引用 29 楼 dazzlingwinter 的回复:
引用 21 楼 cgs1999 的回复:
基于网页的即时聊天,一般两种做法,一服务端向客户端“推”,二客户端从服务端“拉”,不管是“推”和“拉”,以前很多都采用定时器的方式来处理,但采用定时器方式存在延时情况,不能很“即时”。

现在有一种比较流行的方式,客户端通过长连接的方式从服务端拉数据,可关注一下Comet技术,IBM网站上有相关的文章http://www.ibm.com/develo……


同意:现在又很多都用这种方式,推和拉技术,dwr里边提供了这样的例子,可以参考下。 --------------------编程问答-------------------- 我在实训正在做一个网页即时聊天的程序,谁可以指导我下,不胜感激
--------------------编程问答--------------------
引用 11 楼 zhangkai08111 的回复:
都说是ajax。。
--------------------编程问答-------------------- Ajax学习中 --------------------编程问答-------------------- Comet~推技术 --------------------编程问答-------------------- Ajax。。。 --------------------编程问答-------------------- 不清楚什么技术。。关注下! --------------------编程问答-------------------- AJAX 技术, --------------------编程问答-------------------- 我也发现这个现象,看评论的时候,看你跟我发现的一样,我也很奇怪,长期保持http连接,不是应该会有个http失效时间吗,可是我看这个连接始终保持着的。
引用 59 楼 iroyal 的回复:
确实是Comet
用Firebug看了一下,人人的页面会一直保持一个请求到这个URL
http://wpi.renren.com/comet_get?mid=0&r=0.22782801575697498
该请求一直不释放,有新消息来会写入XML数据

客户端一旦拿到数据就发起另一个请求

理论上说发起另一个请求的时候应该通知服务器把之前的请求关掉,但是用Firebug下显……
--------------------编程问答-------------------- 哎,我现在就做这东西,有思路,做出来 给你们看看。哈哈 --------------------编程问答-------------------- JMS  JAXA --------------------编程问答-------------------- --------------------编程问答-------------------- 那到底是啥技术呢,来个高手给大家整明白了吧 --------------------编程问答-------------------- 我记得socket通信就可以,不过不知道大数据行不行,学习时19个人试过,不过都是发到服务器上显示。
刚在网上看了dwr的一个人的例子:
http://www.fengfly.com/plus/view-171609-1.html --------------------编程问答-------------------- ajax    但是不断的刷新会对数据库有冲击,所以有解决这个问题就ok 了
解决这个问题通常用的是 在数据表前面加一层缓存库

这样就可以很实现了, 公司已经开发出来的,效果不错 --------------------编程问答--------------------
引用 96 楼 zpjava 的回复:
ajax 但是不断的刷新会对数据库有冲击,所以有解决这个问题就ok 了
解决这个问题通常用的是 在数据表前面加一层缓存库

这样就可以很实现了, 公司已经开发出来的,效果不错

把聊天信息全部缓存??? --------------------编程问答-------------------- 基于Bayeux Protocol的comet技术
最新的Servlet 3.0已经内置了comet组件
cometD的开源项目已经提供了JQuery、Dojo的前台Javascript
API支持,一个简单的介绍和接触,请看这里 comet introduction --------------------编程问答-------------------- 学习,占位 --------------------编程问答-------------------- 同来学习,占位
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,