📄 技术文档.txt
字号:
[工作原理]
1. 柠檬树聊天室采用Socket及ServerPush 技术编写,以下分析实现原理以及与传统CGI\ASP聊天方式的不同方面
传统型的CGI或ASP聊天程序,进入聊天室界面下载完毕后就和服务的连接完全断开,由浏览器每隔几秒种再次向服务器请求连接,查看有无新发言,并将发言写入聊天页面中,这样,不管有没有发言,浏览器和服务器必须每隔几秒相互连接,进行连接握手,确认,这样带来的后果是比较消耗服务器资源和线路带宽,彼此之间的资源较多地花在连接上,并且当聊天人数达到一定数量,服务器每时都在处理多达上百个连接请求时,ASP服务器很容易崩溃,这种处理方式称为 ClientPull。
所谓ServerPush 方式,就是使用一个chat联接在建立后整个聊天过程中都是保持的,这样从浏览器角度来看,就是一个始终下载不完的大页面,显示效果上就是聊天内容不是靠刷新来更新,而是不断地向上滚动(ASP也可通过Document.Write方法写本地文件,表面上也看不到刷新,但实际刷新是由隐含的Frame处理的)。通过察看html代码可以看到,只有<html><body>,然后就是不断增加的聊天内容,没有</body></html>。这是socket聊天室的关键所在。
在服务器端储存了所有参加聊天的客户的chat socket,当有人发言时,服务器就向所有chat socket发送聊天内容。这样做的好处是聊天信息是由服务器端即时发送给浏览器,聊天速度快,再者,由于不需要反复连接服务器,线路带宽很省,线路上只是传送聊天的文字信息,这样就可能容纳很多人在线聊天。
......
[参考内容]
1. 聊天室的最初结构来自于Entropy Chat 2.0(http://missinglink.darkorb.net/pub/entropychat/),如果没有它的启示,完成这一系统会有许多困难,非常感谢他们的努力工作。
2. http的基本交互过程请参考
HTTP Made Really Easy(http://www.jmarshall.com/easy/http/),RFC1945:Hypertext Transfer Protocol -- HTTP/1.0
3. 为加快开发过程,程序的ASP管理界面部分参考了稻香居聊天室,管理上的很多想法也来自于他们的工作。
4. 《How to Write a Chat Server》可以作为一个很好的参考
http://hotwired.lycos.com/webmonkey/97/18/index2a.html
6. 需要测试聊天室功能可以到 http://www.skly.net.tc
2002年5月21日
skly1985@sina.com
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -