原文地址:http://www.duduwolf.com/post/chatroom_for_AJAX.asp
應(yīng)Aether之邀寫一個基礎(chǔ)點的AJAX操作實例,想來想去就寫一個聊天室吧,以前寫AJAX時一來偷懶,二來為了簡單,都用純文本或者javascript數(shù)組進(jìn)行交互,這次改成純粹的xml操作。想得時候很簡單,無非就處理發(fā)送消息,接收消息,登陸和退出這幾種事件,但真正要寫的時候還是頗費周折,主要是ASP對Session間的消息(對象)傳遞功能太弱了,只能在Application、數(shù)據(jù)庫、自定義服務(wù)端組件三種方法中挑一個,自定義服務(wù)端組件先Pass了,既然要寫一個輕量級的,數(shù)據(jù)庫能不用就不用了,最后還是盯上了Application。
聊天室最重要的功能就是一個用戶發(fā)出消息后所有用戶都要能接收到,接受到消息后應(yīng)該給這則消息一個標(biāo)記或者刪除操作。ASP的Application對象可以實現(xiàn)Session間的數(shù)據(jù)交互,再結(jié)合類似于Map的Scripting.Dictionary這個內(nèi)置對象,應(yīng)該就能實現(xiàn)我想要的效果。但是在實際編寫過程中發(fā)現(xiàn)Scripting.Dictionary對象實例根本無法存儲到Application中,查了MSDN后才知不允許將OBJECT和自定義組件以外的對象存儲到Application中,包括自定義Class,暈,只得另想辦法,最后選定用數(shù)組方式解決。
客戶端我用javascript的prototype(原型)功能寫了一個ChatRoom類,用面向?qū)ο蟮姆绞綄崿F(xiàn)了發(fā)送接收消息,登錄和退出。下面就是聊天窗口,請輸入昵稱登錄后就能開始聊天了:)程序還有很多bug,實在無心調(diào)試了。
下載: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>