聊天室
{
\"code\": 200,
\"title\": \"\",
\"content\": \"聊天室(chatroom)是一個網上空間,為了保證談話的焦點,聊天室通常有一定的談話主題。任何一個聯入Internet、使用正確的聊天軟件,並且渴望談論的人都可以享受其樂趣。聊天室有語音聊天室和視頻聊天室等分類。\\n\\n網絡聊天室通常直稱聊天室,是一種人們可以在線交談的網絡論壇,在同一聊天室的人們通過廣播訊息進行實時交談。\\n\\n聊天室可以建立在即時通訊軟件(如MSNMessenger、QQ)、P2P軟件、萬維網(如Halapo,Meebo)等基礎上,萬維網方式更為普通和種類繁多,交談的手段不侷限於文字,更包括語音、視頻。通常聊天室是按照房間或頻道為單位的,在同一房間或頻道的網人可以實時地廣播和閱讀公開訊息。一般情況下,與其它網絡論壇、即時通訊不同的是,聊天室不儲存聊天記錄。\\n\\n聊天室基本原理是,拋開CGI和WWW服務器,根據HTML規範,接收到瀏覽器的請求以後,模仿WWW服務器的響應,將聊天內容發回瀏覽器。在瀏覽器看來就像瀏覽一個巨大的頁麵一樣始終處於頁麵聯接狀態,這就是一個專門的聊天服務器,一個簡化了的WWW服務器。\\n\\n優點\\n\\n知名SEOer的Anzone安澤先生總結了以下優點:\\n\\n1.這樣相比CGI方式來說,聊天室的優點就很明顯。\\n\\n2.不需要專門的WWW服務器,在聊天服務器裡完成必要的工作,避開耗時的CGI過程。\\n\\n3.如果使用單進程服務器,就不需要每次產生新進程。\\n\\n4.數據交換完全在內存中進行,不用讀寫檔案。\\n\\n5.不需要定時重新整理,減少螢幕的閃爍,減少對服務器的請求次數。\\n\\n實現流程\\n\\n一、聊天服務器實現流程\\n\\n用戶數據輸入都是通過URL傳送,下麵是幾個URL實例,結合後麵客戶端流程,可以更好地理解係統結構。\\n\\n這是一個用戶名密碼均為‘aaa''''的聊天用戶登錄係統,說了一句話“hello”,然後退出所產生的一係列請求,其中密碼用係統函數crypt加密過:\\n\\n二、客戶端具體登錄過程\\n\\n我們先看看聊天介麵:\\n\\n聊天介麵由三個frame組成,其中chat幀是聊天內容顯示部分,talk幀是用戶輸入部分,包括聊天內容輸入、動作、過濾以及管理功能都在這一幀輸入,names是在線名單顯示部分,這一部分是定時重新整理的。\\n\\n進入聊天室\\n\\n目前聊天室有兩種,一種是基於網頁的,還有一種是需要安裝軟件的。\\n\\n我們來看看第一種瀏覽器的看看進入聊天室的過程。\\n\\n1.首先瀏覽器請求頁麵:\\n\\n此時產生了一個連接到服務器聊天的聯接,併傳送了一行數據:\\n\\n2.服務器生成一個sessionID,驗證密碼以後,發回:\\n\\n然後服務器關閉聯接。\\n\\n3.瀏覽器收到以上檔案後,將會依次打開三個聯接(其中的$sid和$encrypt_pass是變量):\\n\\n這三個聯接中的第一個聯接chat在整個聊天過程中都是保持聯接的,這樣從瀏覽器角度來看,就是一個始終下載不完的大頁麵,顯示效果上就是聊天內容不是靠重新整理來更新,而是不斷地向上滾動。通過察看代碼可以看到,然後就是不斷增加的聊天內容.\\n\\n另外兩個聯接在頁麵發送完畢以後,就關閉了。\\n\\n這樣一次登錄聊天室實際上有四次聯接,但登錄完成以後,隻有chat幀的是保持聯接的,用於接收來自服務器的聊天資訊,這是聊天室的關鍵所在。\\n\\n在服務器端儲存了所有參加聊天的客戶的chat,當有人發言時,服務器就向所有chat發送聊天內容。\\n\\nTalk與names幀的html實際上和普通的form是一樣的。\\n\\n4.在用戶登錄以後,服務器端儲存了一張包括用戶資訊的表格:\\n\\n在perl實現中,我們使用雜湊結構儲存資訊,以sessionID作為key索引。這樣的存儲結構便於存取數據,回收空間。每個客戶資訊是一個數組:\\n\\n[name,passwd,privilige,filter,login_time,color]:儲存chat幀聯接name:用戶名passwd:密碼privilige:權限filter:某個用戶的過濾列表的引用(reference)login_time:記錄登錄時間,以便以後清除一些超時聯接color:用戶聊天顏色\\n\\n以上用戶數據大部分是在login階段,用戶通過密碼驗證以後填入的。隻有chat要等到chat幀顯示以後纔得到。如果超過一定時間,還是冇有填入,說明瀏覽器取得主框架以後連接中斷了,這時候就需要刪除該用戶數據。\\n\\n以上是聊天室核心部分,其他部分,如用戶註冊、改密碼等可以沿用CGI聊天室代碼。\\n\\n致於第二種就簡單多了,下載聊天室程式安裝後註冊一個註冊就可以登陸了。\\n\\n功能改進\\n\\n目前提供了聊天、悄悄話、動作這些基本聊天功能以及過濾用戶名單這樣的附加功能。管理功能完成了踢人、查IP、任命室主。今後需要改進的地方有:\\n\\n穩定性:目前聊天室還冇有經過大用戶量測試,穩定性還不能充分保證。由於是單進程循環服務器,某個用戶通訊死鎖將導致所有人死鎖。如果采用併發多進程服務器,可以使穩定性得到提高。但這樣的係統對服務器資源消耗也會大許多。\\n\\n功能:自建聊天室等功能已完成,這些外圍功能在穩定性有保證以後就可以比較容易地加入。\\n\\n分類\\n\\n按功能分類可以看出,聊天室可分為語音聊天室和視頻聊天室\\n\\n語音聊天室:即聊天過程中以語音為基礎進行交流,為了避免聊天室太混亂,就引入了排麥的概念,即要講話的都 點擊自己的麥,加入下次發言的隊列中,按先申請先發言的規則來玩。\\n\\n語音聊天室網站\\n\\n1.考米網\\n\\n“考米網”是深圳市盈華訊方通訊技術有限公司領先推出的能夠電話聊天交友的網站,在網絡交友的基礎上增添電話聊天,提供一對一通話、多人通話、二人電話約會、自建會議聊天室、電話中發送的語音短訊,設置個性化個人資料等十幾種功能。在不方便使用電腦的時候,也能通過手機、電話撥打400熱線,隨時和網上的好友保持聯絡。\\n\\n2.YY聊天\\n\\n是一種YY團隊語音工具,是多玩遊戲網針對中文用戶設計的多人語音群聊工具。它是一款免費語音軟件,穩定清晰的語音工具,用於遊戲玩家交流等。即時通話,是一款不錯的通訊軟件。\\n\\n3.ISpeak\\n\\nISpeak娛樂互動平台(簡稱IS),是國內專業遊戲語音服務商,擁有上千萬註冊用戶,每天活躍用戶上百萬,公會頻道近10萬個的規模,已經成為國內一流的語音互動平台。\\n\\nIS以網絡遊戲用戶為基礎,提供專業的語音、聊天、社區論壇等。為用戶提供免費的語音頻道和無償服務;為公會提供一個更好的實現自我平台,促進和扶持公會的成長;為廠商提供一個遊戲推廣,服務玩家的超大型互動娛樂社區。\\n\\n視頻聊天室:一般集合了語音聊天與文字聊天,視頻聊天過程中對網絡帶寬要求更高,電腦需配置有攝像頭才能發送視頻信號,真正做到麵對麵的聊天。\\n\\n市場主流視頻聊天室\\n\\n1.9158多人視頻\\n\\n9158是是目前中國最大的多人視頻互動交友平台,把多人聊天、虛擬聊天、影院聊天、網絡遊戲相結合的創新。其中最著名的是9158虛擬視頻和多人視頻聊天。將網絡的演繹天地、音樂殿堂、同城有緣、我為歌狂、原創音樂、寂寞聊吧、唯舞獨尊、網絡教學、婚戀交友、財經證券等功能很好的展示出來。是廣大用戶進行聊天,交友,唱歌,遊戲,跳舞的互動娛樂平台,也是國內最清晰的多人互動視頻平台。網友可以自行申請房間,擔任房間室主號召誌同道合的網友一起來房間輕歌曼舞、暢談心扉、尋覓知音。同時也可以在官方房間欣賞視頻互動節目,邊玩樂邊交友,一個真正心與心溝通的互動交友社區。\\n\\n2.睿網娛樂是目前國內較為罕見的綠色視頻聊天室,在2年以來飛速發展,睿網公司已有13個不同類型的聊天室。睿網娛樂軟件聚合了睿網公司旗下七個娛樂交友平台,七站登錄一站式設計,讓所有平台第一時間展現。以唱歌交友為主,裡麵彙聚了眾多大學生,原創唱歌高手,夜店喊麥DJPK晚會,古裝演繹晚會等並有非常豐厚的獎金深受追捧。睿網娛樂公司常重金邀請明星客串嘉賓,並將成立網絡歌手娛樂公司。\\n\\n3.Cuseeme5.0\\n\\n功能還不錯,在Netmeeting不能用的情況下,用這個軟件常常可以看到,但聽不到。\\n\\n4.Dvaq\\n\\n深圳一家公司剛搞出來的。和QQ很象的東西,有視頻聊天室,進去看了看,一些男男女女在裡麵放浪狂聊。\\n\\n5.eyeball2.2\\n\\n介麵很漂亮,可以整合MSN、yahoo、messenger等,效果不錯,呼叫起來也很方便,可是在和MSN通訊的時候,不能用中文,真遺憾。大家都用什麼軟件,交流一下。在冇有直接對外的IP的情況下,視頻和音頻總是常常不能正常成功地傳送。那位DX給個解決方案。\\n\\n6.新浪UC2009\\n\\n新浪UC2009這個版本把UC視頻聊天室升級為SinaShow,並且提供更專業流暢的視頻聊天服務。炫麗的藍色經典皮膚,典雅中不失活潑,給您全新的視覺休驗。\\n\\n7.呱呱視頻社區\\n\\n呱呱視頻社區2010簡體中文免費版,全新的聊天介麵、超清晰的視頻接入、立體寬頻,享受數千人KTV房間共同K歌的感覺讓您一展天籟之音。2010新版對視頻編碼進行了優化,3大視頻更加流暢清晰,更可全屏收看。體驗視覺盛宴帶來的超級快感.聊天室提供強大的視頻對聊功能,您可以隨心所欲與好友視頻通話.超清晰視頻對聊給您不一樣的體驗.震撼效果無與倫比!\\n\\n8.聊聊語音聊天網\\n\\n聊聊語音聊天網操作起來很方便,隻需在主頁下載其相關軟件,再免費註冊一個聊聊號就可以輕鬆登陸,進行視頻聊天,交友,唱歌,遊戲等相關活動。洋蔥頭的表情也十分生動有趣。雙線的人性化設置,讓更多的朋友可以零距離進行交流。\\n\\n9.都秀視頻聊天軟件doshow\\n\\n都秀視頻聊天軟件是北京都秀網絡科技有限公司基於寬帶IP網絡推出的“全新網絡多人視頻聊天工具”它整合了文字、語音、視頻等多種互聯網通訊形式於一身,旨在為廣大互聯網用戶提供融合數據、語音、視頻的高品質多媒體綜合娛樂社區服務。\\n\\n10.中國紅舞台\\n\\n中國紅舞台由上海技通網絡科技資訊有限公司開發的。中國紅舞台的視頻聊天室屬於網頁版,不需要下載外掛或客服端,可實現免費的並且多人視頻聊天的平台,給用戶不一樣的體驗。\\n\\n11.Netmeeting\\n\\nwindows自帶,很方便.還可以遠程控製對方的電腦.可以共享桌麵,傳送檔案,共用畫圖板,但對方如果是共享上網冇有直接對外的IP就呼不到對方,不知道有什麼解決方案。\\n\\n12.三聊視頻聊天網三聊視頻聊天網是網頁版的視頻聊天網站,需要下載外掛纔可以登陸,但是不一定要註冊纔可以登陸,人比較多,視頻語音還算比較流暢,屬於國內比較知名的大型視頻聊天網站之一。\\n\\n相關資料\\n\\n首先要說,編寫真正好的聊天室已經超出了CGI的範疇,要求不僅對語言而且對操作係統和網絡協議有一定的瞭解,需要一些經驗的積累。簡單的說就是編寫守護程式,這裡牽扯到socket編程,進程間互動,(二者都是比較古老的技術),以及HTTP協議。前麵“天水”同誌已經貼出了這部分的C代碼,我隻是稍做解釋。聊博高手一哂。1.socket編程,利用UNIX的socket抽象概念打開服務器的一個麵向連結的,等待外部的聯接請求。 perl語言使用名空間IO::Socket::INET,在新版本的perl中我推薦使用HTTP::Daemon配合HTTP::Request(可以簡化HTTP處理過程)。2.進程間互動,這是實現不刷屏的關鍵所在,socket連結後通常利用子進程完成與用戶的具體互動工作(當client存在,子進程一直與其保持連結,不首先關閉連結),而父進程返回等待其他連結請求。父進程與子進程間的互動工作通常用管道pipe()來完成,這裡使用單工管道即可,即父-〉子。工作是這樣的:當有內容提交,父進程將它通過管道傳遞給所有存在的子進程(通常儲存在hash中),然後子進程分彆發給各自的client.看起來不難。 值得注意的問題:一是判斷用戶client是否關閉連結。二是子進程退出後,捕捉$SIG信號。這兩點很重要,開放過多的進程,管道和將大量的信號全都仍給操作係統,它還受得了麼?儲存管道的hash也不能越來越大吧?3.HTTP協議,就是分析用戶的HTTP請求,並且返回HTTP應答。 首先看看請求是什麼方式,get還是post,當然還有一些不常用的。get處理起來比較簡單,post要通過head的資訊read()body,網上對HTTP具體結構的闡述很多,我就不多說了。值得注意的問題:一個是換行符問題,新手就把它都當作\\\\012\\\\015即可。另一個是HTTP1.1同老闆本在處理post時不太一樣。掌握了以上內容,可以嘗試編寫一個簡單的HTTPserver,會很有滿足感。perl繼承了大量的c的*.h,編寫上述問題完全可以勝任,細節都和c很相似,請關注perl朋友,對它有充分的信心!上麵說的前兩點都是跟操作係統相關的,NT還不行,我在activeperl5.6上試過,並不像傳說的,有很多問題。不修改代碼直接在NT上使用我們隻能期待更完善的activeperl了。錯誤之處請高手糾正,共同進步。\\n\\n目前官方收錄中文免費視頻聊天站點119個,包括新浪UC,呱呱視頻社區,睿網娛樂,9158,唐人街,跳舞吧,好聊,愛聊,康福,齊秀,碧聊,聊聊網等國內最知名的視頻聊天室站點。國外站點19個。尤其以呱呱視頻社區為代表的聊天室讓廣大聊天愛好者真實感受聊天帶來的快樂!\\n\\n\"
}