原文地址:http://www.duduwolf.com/post/chatroom_for_AJAX.asp
应Aether之邀写一个基础点的AJAX操作实例,想来想去就写一个聊天室吧,以前写AJAX时一来偷懒,二来为了简单,都用纯文本或者javascript数组进行交互,这次改成纯粹的xml操作。想得时候很简单,无非就处理发送消息,接收消息,登陆和退出这几种事件,但真正要写的时候还是颇费周折,主要是ASP对Session间的消息(对象)传递功能太弱了,只能在Application、数据库、自定义服务端组件三种方法中挑一个,自定义服务端组件先Pass了,既然要写一个轻量级的,数据库能不用就不用了,最后还是盯上了Application。
聊天室最重要的功能就是一个用户发出消息后所有用户都要能接收到,接受到消息后应该给这则消息一个标记或者删除操作。ASP的Application对象可以实现Session间的数据交互,再结合类似于Map的Scripting.Dictionary这个内置对象,应该就能实现我想要的效果。但是在实际编写过程中发现Scripting.Dictionary对象实例根本无法存储到Application中,查了MSDN后才知不允许将OBJECT和自定义组件以外的对象存储到Application中,包括自定义Class,晕,只得另想办法,最后选定用数组方式解决。
客户端我用javascript的prototype(原型)功能写了一个ChatRoom类,用面向对象的方式实现了发送接收消息,登录和退出。下面就是聊天窗口,请输入昵称登录后就能开始聊天了:)程序还有很多bug,实在无心调试了。
下载:http://www.duduwolf.com/test/chatRoom.asp.txt
<script language="javascript" type="text/javascript" src="http://www.duduwolf.com/test/chatRoom.asp?act=script"></script>
<div id="chatRoom"></div>
<script>var chat = new ChatRoom('chat', document.getElementById('chatRoom'), 500, 400);</script>