浏览 10709 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-09-27
homepage: http://www.chenshen.com/Projects/eChat/eChat.htm 大致原理: 与一般的ASP聊天室不同,这种聊天服务器是完全独立的服务端程序。当它运行的时候先监听端口,一旦用户通过浏览器访问,便模拟WEB服务器通过HTTP和用户通讯。由于使用了Java技术,所以安全性以及速度上比起一般的ASP聊天室优势明显。 以下列出了eChat聊天服务器的技术特点: 1) 跨平台:可以稳定运行在Liunx下 2) 多线程:提高了聊天服务器的整体性能 3) Server Push:使客户与服务器处于不间断状态,实现了“无刷新”聊天 这种基于服务端的聊天室我还是第一次见到,孤陋寡闻吧,使用起来感觉挺快的,而且挺方便,不需要用到Tomcat等JSP容器。 2.一个用ASP.Net实现的超快聊天室。 http://www.lostinet.com/jancchat/Login.aspx 如果是一般的ASP.Net的聊天室,那没有什么,但是它的特色是采用了一个“Janc”的组件,可以把服务器的静态方法发布给客户端进行远程调用,页面不用刷新,非常快。 基本原理: 如果要完成一项不刷新某页而进行和服务器交互的过程,那应该怎么做呢? 常规来说,有以下方法: 1。使用JavaApplet作为中介和服务器交互。不过用户必须为这交互过程编写Java代码。 2。使用ActiveX控件做中介。但是ActiveX的权限太大,未一定能得到客户信任。 3。使用IFrame把某个窗体隐藏,然后用传统的方法进行GET和POST。不过请求数据的发送和状态都非常难控制 4。使用MSXML的XMLHTTP来进行数据的传输。这个只适应于Win98或安装了MSXML(IE6自带的Windows系统) 5。使用dotnet的Assembly来写客户端程序。不过这需要客户端安装dotnet组件。 Lostinet.Janc(以下称为Janc)是一个实现和服务器交互的组件。 实际上,它没有提供新的方法来进行和服务器的交互。 它的编写目的就只有一个:为了方便: 要方便代码的编写,要方便程序的发布。。 Lostinet.Janc采用第4种方法(使用Microsoft.XMLHTTP)和服务器交互。 从作者采用这个组件做成的聊天室 http://www.lostinet.com/jancchat/guest/ 和论坛 http://forum.lostinet.com/Forum.Aspx 可以看到速度实在快的厉害 --------------------------------- 好了,开始讨论吧,我是一个Java技术的初学者,对这些都很难有比较深入的分析和思考,下面说一下我的看法吧。 两个聊天室的作者都谈到,采用这种技术可以减轻服务器的负担,加快速度,实际上这是做到了,两者都非常快。特别是那个ASP.Net的技术,无需刷新页面就可以做到更新页面。我想,对于中小型的应用,它应该是不错的选择吧。对于大型的应用,就不得而知了。 另外,今天看到dlee说到“传统的 J2EE Patterns 中将表示层完全交给 JSP/Servlet 来做,忽略了浏览器 JavaScript 的能力,这是一个重大的失误。 ”,我想起某文章中说到ASP.Net大量使用了JScript,造成“过度复杂”。现在很少听到JSP的应用用到JavaScript,因此对dlee的技术很感兴趣,想听听。 各位高手达人,请发表一下各位的简介吧,谢谢。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-09-28
还有一种,就是server不关闭http 连接,一旦有人说话了就push过去。其实就是一个长连接。
这样子兼容性不错,不需要任何客户端控件,不需要客户端刷新,速度也很快。 |
|
返回顶楼 | |
发表时间:2003-09-28
用XMLHTTP有个问题就是,XMLHTTP如果用同步模式,容易造成IE死锁。如果用异步模式,就会出现聊天次序颠倒的可能性。
而且这对server的压力,和隐藏frame刷新是一样的。 |
|
返回顶楼 | |
发表时间:2003-09-28
哦,没注意,第一种那种所谓的
3) Server Push:使客户与服务器处于不间断状态,实现了“无刷新”聊天 就是我上面说的不结束http连接。 至于后台是不是用java,与最终速度无关。实际上安全性什么的,对server端程序没什么意义。用native code比如C++,只会更快。 |
|
返回顶楼 | |
发表时间:2003-09-28
曹晓钢 写道 用XMLHTTP有个问题就是,XMLHTTP如果用同步模式,容易造成IE死锁。如果用异步模式,就会出现聊天次序颠倒的可能性。
而且这对server的压力,和隐藏frame刷新是一样的。 能否说明一下,或者提供一些文章链接。 此外也很想听听dlee的见解。 |
|
返回顶楼 | |
发表时间:2003-09-28
曹晓钢说的很对。我们对于这个问题是这样处理的,如果只传递少量数据,就采用同步方式来做。如果传递大量数据,就采用异步方式来做。异步方式是设置一个回调方法,数据传到前台后调用回调方法完成页面的刷新。这样可以尽量减少出现 IE 死锁的情况。MessageBean 的出现也是为了解决迅速响应这个问题的。
XMLHTTP 由于只传递 XML 数据,对于服务器的压力应该是比刷新 iframe 要小些。当然 iframe 的内容也可以是一个 XML island 的数据,这样两者就是一样的了。 次序颠倒确实不太容易解决,每条消息传到服务器可以自动加一个时间戳,传输到浏览器后,浏览器缓冲一些消息后进行排序。但是做起来可没那么简单,可能还要设置一个滑动窗口,还有确认、重发,简直就是自己实现一套通信协议了。以前我就是搞这个的,呵呵。 Jabber 是一套实现即时通信的中间件,功能很强,各位有空了可以看看。 |
|
返回顶楼 | |