欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

聊天室實(shí)現(xiàn)私聊第2/4頁(yè)

 更新時(shí)間:2006年09月30日 00:00:00   作者:  

聊天室程序是一個(gè)application和session對(duì)象結(jié)合性很強(qiáng)的asp程序。首先,它比較具有實(shí)時(shí)性,聊天速度太慢,那么沒(méi)有人會(huì)喜歡的,而且在多人同時(shí)發(fā)言的時(shí)侯,如果程序處理不好,那么難免會(huì)發(fā)生張官李戴的現(xiàn)象,比如說(shuō)明明張三說(shuō)的話在先。李四說(shuō)的話在后,但顯示出來(lái)的結(jié)果卻是倒轉(zhuǎn)了。還有就是每個(gè)客戶(hù)端顯示的談話內(nèi)容不同步。(這里強(qiáng)調(diào)一點(diǎn),聊天室的談話內(nèi)容自動(dòng)更新方式主要是兩種,一種是服務(wù)器自動(dòng)更新,也就是它的聊天顯示內(nèi)容區(qū)是一個(gè)正在打開(kāi)中的html流,每當(dāng)服務(wù)器接收到用戶(hù)的談話內(nèi)容就會(huì)發(fā)送到用戶(hù)的瀏覽器中。另一種是用戶(hù)端定時(shí)向服務(wù)器端發(fā)出更新請(qǐng)求。后者的實(shí)時(shí)性沒(méi)前者強(qiáng)。但制作起來(lái)簡(jiǎn)單,要完成服務(wù)器端自動(dòng)更新,光靠asp是無(wú)法完成的。因?yàn)锳SP沒(méi)有內(nèi)置的延時(shí)功能?,F(xiàn)在所舉例的聊天室主要是以后者來(lái)說(shuō)明的,但方法同樣可以前者里使用) 

  要解決多個(gè)用戶(hù)同時(shí)發(fā)言以及顯示的順序問(wèn)題,那么就必須為談話內(nèi)容建立一個(gè)緩沖區(qū),就好象操作系統(tǒng)的鍵盤(pán)緩沖區(qū)的功能一樣,即使系統(tǒng)正在忙于處理別的任務(wù),但還是可以準(zhǔn)確地接受用戶(hù)輸入。 

  上面的程序例子: 

dim chats(20) 
for n=1 to 20 
chats(n)=application("chats")(n) 
next 
  就是建立了一個(gè)20個(gè)元素的chats數(shù)組,那么只需要再建立一個(gè)全局公用的計(jì)數(shù)器(用application對(duì)象來(lái)保存),用以指示當(dāng)前最新的發(fā)言?xún)?nèi)容是在那一個(gè)元素當(dāng)中。而每個(gè)用戶(hù)又定義一個(gè)session對(duì)象的計(jì)數(shù)器。用以記錄當(dāng)前聊天者本機(jī)顯示的信息是顯示到那一條談話記錄上。兩者之差的談話內(nèi)容都必須在下一次更新說(shuō)話內(nèi)容的時(shí)侯顯示出來(lái)。 

  chats數(shù)組作為一個(gè)談話緩沖區(qū),是需要循環(huán)使用的。比如第一句發(fā)言的保存在chats(1)中,第二十句則保存在chats(20)中,而第二十一句則重新使用chats(1)來(lái)保存,而把第一句的內(nèi)容覆蓋掉。而chats數(shù)組只是用于處理公共的談話內(nèi)容。也就是不是“悄悄話”如果把悄悄話也作為一條新的信息保存在這里,那么就會(huì)影響的計(jì)數(shù)器了。因?yàn)閷?duì)于非悄悄話的聊天對(duì)象來(lái)說(shuō)。這句話是無(wú)意義的。為了減少條件判斷,就把悄悄話另外用application("chat")這個(gè)應(yīng)用對(duì)象變量來(lái)保存。在悄悄話的處理用,小虎并沒(méi)有使用緩沖區(qū),因此當(dāng)同一聊天室內(nèi)多個(gè)網(wǎng)友同時(shí)使用悄悄話功能時(shí),就可能出現(xiàn)有的悄悄話在沒(méi)被顯示出來(lái)之前,被漏掉的缺點(diǎn),大家不妨可以發(fā)揮自己的智慧去改進(jìn)一下哦:) 

  當(dāng)處理完chats的對(duì)話內(nèi)容后。必須把它重新存儲(chǔ)到application("chats")(n)這個(gè)全局的談話緩沖區(qū)中,那樣才能讓所有用戶(hù)共享對(duì)話內(nèi)容。 

  下面是對(duì)耳語(yǔ)的談話處理 

'耳語(yǔ)處理 
application("chat")="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>悄悄地對(duì)<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>耳語(yǔ)</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>" 
'對(duì)誰(shuí)說(shuō) 
application("chatto")=request.FORM("whoto") 
'說(shuō)話的人 
application("owner")=username 
session("chat")="true" 
end if 

  session("chat")是一個(gè)用來(lái)記錄用戶(hù)是否有悄悄話的標(biāo)記,當(dāng)更新對(duì)話內(nèi)容的時(shí)候,就通過(guò)判斷這個(gè)標(biāo)記來(lái)判斷是否有悄悄話產(chǎn)生。同時(shí)。通過(guò)applicaton("chat")記錄對(duì)話內(nèi)容,applicaton("chatto")悄悄話的對(duì)象,application("owner")保存發(fā)言者本人(別忘了悄悄話是自己和接受悄悄話的對(duì)方可以看見(jiàn)的哦:(,還有,當(dāng)對(duì)ALL(所有人)發(fā)悄悄話時(shí),大家都應(yīng)能看見(jiàn)這句瞧瞧話。 

當(dāng)發(fā)言?xún)?nèi)容都分別進(jìn)入了application("chats")(n)和applicaton("chat")這兩個(gè)談話緩沖區(qū)后。下一步要做的就是顯示出對(duì)話內(nèi)容了。這里先向大家提一下如何實(shí)現(xiàn)聊天事的定時(shí)刷新(客戶(hù)端主動(dòng)) 

在我們的html文件的頭有一個(gè)這樣的標(biāo)記 

<meta http-equiv="refresh" content="2.5"> 

這里示了html文檔的更新類(lèi)行,上面這個(gè)標(biāo)記就是把本文檔按2.5秒的速度不斷自動(dòng)刷新,那么利用這一點(diǎn),就可以實(shí)現(xiàn)自動(dòng)更新對(duì)話內(nèi)容了。我們使用的顯示對(duì)話的asp文件名為top.asp。下一節(jié)大家一起來(lái)看看它的結(jié)構(gòu)。

相關(guān)文章

最新評(píng)論