基本介紹
網路聊天室通常直稱聊天室,是一種人們可以線上交談的網路論壇,在同一聊天室的人們通過
廣播訊息進行實時交談。
聊天室可以建立在
即時通訊軟體(如MSN Messenger、QQ、Anychat)、P2P軟體、
全球資訊網(如 Halapo,Meebo ) 等基礎上,全球資訊網方式更為普通和種類繁多,交談的手段不局限於文本,更包括語音、視頻。通常聊天室是按照房間或頻道為單位的,在同一房間或頻道的網人可以實時地廣播和閱讀公開訊息。一般情況下,與其它網路論壇、即時通訊不同的是,聊天室不保存聊天記錄。
聊天室基本原理是,拋開CGI和WWW伺服器,根據HTML規範,接收到瀏覽器的請求以後,模仿WWW伺服器的回響,將聊天內容發回瀏覽器。在瀏覽器看來就像瀏覽一個巨大的頁面一樣始終處於頁面聯接狀態, 這就是一個專門的聊天伺服器,一個簡化了的WWW伺服器。
聊天者只需在想要進入的聊天室註冊自己的用戶名、密碼後,登錄進入某一個聊天室(大多數網站都有很多的聊天室)。在聊天室里,一般都會列出正在聊天人的名單,並且對新人進入進行提示。聊天者在一個對話框裡留言,寫下的話會立刻被其他人看到,並收到回應。用戶也可以在聊天室內看別人對話,而自己不說話,這種行為一般被稱作“潛水”。
由於聊天室里的話語都是立即可見的,所以需要一個管理員來維持秩序。管理員會制定一些基本的規章制度讓大家來遵守。比如,當聊天者剛進入聊天室的時候,應該向大家介紹自己;當你向某人說話時,應該明確指明說話對象;舉報一些惡意說廢話者,他們反覆說同樣的話,使對方經常滾屏。聊天室的話題涉及方方面面,如,經典電影、愛爾蘭歷史、警察暴行、精神食糧。有的網站,如Yahoo,提供分專題的聊天室。有的網站,如MSN,可以指導用戶創建自己的話題聊天室。
分類
視頻類
視頻聊天室是在一個網站中或者客戶端軟體中,供許多人通過文字與視頻進行實時(您輸入的內容馬上就能被別人看見)交談、聊天的場所,它是一個向整個網際網路開放的地方。例如:anychat、9158等。
文字類
文字聊天室是網站中以文字或符號顯示為信息傳遞方式的聊天方式。聊天室有一對一聊天、多人群聊等形式。文字聊天室多見於手機功能,或使用手機套用進行文字聊天,或使用瀏覽器作為載體進行網頁文字聊天。例如:omegle、妙戀佳人網手機wap聊天室等
優點
1.這樣相比CGI方式來說,聊天室的優點就很明顯。
2.不需要專門的WWW伺服器,在聊天伺服器里完成必要的工作,避開耗時的CGI 過程。
3.如果使用單進程伺服器,就不需要每次產生新進程。
4.數據交換完全在記憶體中進行,不用讀寫檔案。
5.不需要定時刷新,減少螢幕的閃爍,減少對伺服器的請求次數。
實現流程
一、 聊天伺服器實現流程
用戶數據輸入都是通過
URL傳送,下面是幾個URL實例,結合後面客戶端流程,可以更好地理解系統結構。
這是一個用戶名密碼均為‘aaa''''的聊天用戶登錄系統,說了一句話“
hello”,然後退出所產生的一系列請求,其中密碼用
系統函式crypt加密過:
二、客戶端具體登錄過程
我們先看看聊天界面:
聊天界面由三個frame組成,其中chat幀是聊天內容顯示部分,talk幀是用戶輸入部分,包括聊天內容輸入、動作、過濾以及管理功能都在這一幀輸入,names是線上名單顯示部分,這一部分是定時刷新的。
進入
通常聊天室有兩種,一種是基於網頁的,還有一種是需要安裝軟體的。
我們來看看第一種瀏覽器的看看進入聊天室的過程。
1.首先瀏覽器請求頁面:
此時產生了一個連線到伺服器聊天連線埠的聯接,並傳送了一行數據:
2.伺服器生成一個session ID,驗證密碼以後,發回:
然後伺服器關閉連線。
3.瀏覽器收到以上檔案後,將會依次打開三個連線(其中的$sid和$encrypt_pass是變數):
這三個聯接中的第一個聯接chat在整個聊天過程中都是保持連線的,這樣從瀏覽器角度來看,就是一個始終下載不完的大頁面,顯示效果上就是聊天內容不是靠刷新來更新,而是不斷地向上滾動。通過察看代碼可以看到,然後就是不斷增加的聊天內容.
另外兩個連線在頁面傳送完畢以後,就關閉了。
這樣一次登錄聊天室實際上有四次連線,但登錄完成以後,只有chat幀的是保持連線的,用於接收來自伺服器的聊天信息,這是聊天室的關鍵所在。
在伺服器端儲存了所有參加聊天的客戶的chat,當有人發言時,伺服器就向所有chat傳送聊天內容。
Talk與names幀的html實際上和普通的form是一樣的。
4.在用戶登錄以後,伺服器端保存了一張包括用戶信息的表格:
在perl實現中,我們使用哈希結構儲存信息,以session ID 作為key索引。這樣的存儲結構便於存取數據,回收空間。每個客戶信息是一個數組:
[name,passwd,privilige,filter,login_time,color]:儲存chat幀聯接name:用戶名passwd:密碼privilige:許可權filter:某個用戶的過濾列表的引用(reference)login_time:記錄登錄時間,以便以後清除一些逾時聯接 color:用戶聊天顏色
以上用戶數據大部分是在login階段,用戶通過密碼驗證以後填入的。只有chat要等到chat幀顯示以後才得到。如果超過一定時間,還是沒有填入,說明瀏覽器取得主框架以後連線中斷了,這時候就需要刪除該用戶數據。
以上是聊天室核心部分,其他部分,如用戶註冊、改密碼等可以沿用CGI聊天室代碼。
致於第二種就簡單多了,下載聊天室程式安裝後註冊一個帳號,就可以登入了。
功能改進
提供了聊天、悄悄話、動作這些基本聊天功能以及過濾用戶名單這樣的附加功能。管理功能完成了踢人、查IP、任命室主。今後需要改進的地方有:
穩定性:聊天室還沒有經過大用戶量測試,穩定性還不能充分保證。由於是單進程循環伺服器,某個用戶通信死鎖將導致所有人死鎖。如果採用並發多進程伺服器,可以使穩定性得到提高。但這樣的系統對伺服器資源消耗也會大許多。
功能:自建聊天室等功能已完成,這些外圍功能在穩定性有保證以後就可以比較容易地加入。
小技巧
如何在聊天室改變字型的大小和顏色,還有傳送圖和音樂
注意:以下一定要在英文狀態下打。
使用< font>語句可以改變字的顏色、大小和字型。
例如:< font color=red face=宋體 size=3> hi< /font>
顏色有:
(灰色)gray,(海藍)navy,(橄欖)olive,(洋紅)fuchsin,(紫色)purple.
(黑色)black, Olive, Teal, (紅色)Red, (藍色)Blue, Maroon, Navy, Gray, Lime,
Fuchsia,(綠色)Green, Silver, (黃色)Yellow, Aqua
大小:1~30.一般用"3~5".
此外"< big>" "< strong>" "< b>" "< i>"等都可以使用。
具體的用法可以參考HTML語言的說明。您也可以使用一些HTML工具編寫好以後,再把源碼拷過來貼上。
如果您要恢復字型的設定,請使用“< /font>”,因為經常有人忘記把“< font>”和“< /font>”成對使用,你可要記得喲!
傳送圖片: < img src=圖片網址>
例如: < img src=http://www.eSchool.c om. cn/cgd-01.gif>
傳送音樂: < img dynsrc=音樂網址>
例如: < img dynsrc=http://www.eSchool.c om.c n/duanfa.mid> 遺憾的是Netscape不支持。
以下是在進聊天室前加入的(再輸入名字那裡):
將名字變得好看些:
< font color=red size=5>old< /font>< font color=green size=5>
lion< /font>< font color=blue size=5>網友聊天室< /font>
這是我的,請參照,不要用我的啊。謝謝!
在名字前加幅圖: 就是在在進聊天室時像發圖那樣的,也可進了聊天室後在配置里改。
教你一招:那就是看見人家在聊天室傳送出來的語句(如改變字型,傳送音樂或圖片,或者其他。)你可以用滑鼠右建按聊天的對話框一下,選擇“查看源檔案”那就可以看看人家傳送出來語句的原始碼。嘻```偷人的東西總不太好的。千萬不要告訴別人知道啊。