張源偉 胡越 雷軍



摘 要:使用PHP服務器腳本語言,采用Apache服務器軟件搭建B/S結構,將單條聊天內容以結構化數據庫表對應的單條記錄形式存儲于MySQL數據庫,再通過Ajax技術使客戶端與服務器之間異步發送和接收信息,從而實現無刷新信息交互。該系統的即時聊天系統界面簡潔,功能專一,可使用戶之間的通訊與信息交流更加便捷。
關鍵詞:PHP;Ajax;即時聊天系統;B/S結構
中圖分類號:TP393 文獻標識碼:A 文章編號:2095-1302(2015)10-00-02
0 引 言
互聯網技術飛速發展,Instant Messaging(即時通訊)的出現,通過互聯網技術,革新了當代人信息交流的方式,給人們生活帶來諸多便利。當前,在“互聯網+”的國家發展戰略下,許多傳統服務行業都亟待與互聯網融合,服務必然需要一個互聯網溝通平臺,網頁即時聊天系統便應運而生,該系統界面簡潔,功能專一,不需要下載軟件即可實現信息交流,讓信息交流更加便捷。
1 系統設計
1.1 系統整體架構設計
系統采用B/S模式開發,具有三層結構,具體如圖1所示。其中,表現層主要是提供交互的界面,由HTML完成,業務邏輯和數據訪問層通過PHP和MySQL組合開發,它們是當今較為流行的開源技術,便于使用,運行速度快,功能強大,并且免費,非常適合Web開發[1-3];業務邏輯層則通過PHP寫出收發信息和添刪處理邏輯;數據庫訪問層通過表的結構,寫出相應PHP服務類,然后通過PHP的MySQL接口來實現數據的增刪改查。
圖1 即時聊天系統的三層B/S結構
1.2 系統數據庫設計
系統具有發送信息,添加刪除好友功能,相應的有3張表,其中表1為用戶表,表2為信息表,好友關系表的具體字段設置見表3所列。
2 系統核心功能實現
2.1 驗證功能
系統界面是通過HTML完成,當用戶寫入用戶名和密碼時,通過get方式向服務器發送請求,服務器驗證頁面接收到用戶名和密碼,通過連接數據庫,將接收到的用戶名和密碼與數據庫中用戶表的記錄進行逐行比對,如果與某一行完全匹配,則跳轉到聊天界面,否則跳轉到注冊界面。圖2所示是其驗證功能流程圖。如果是第一次登陸,生成session,在服務器保存用戶信息。
2.2 發送信息功能
當用戶點擊發送信息按鈕時,瀏覽器向服務器發送Ajax請求,服務器中的處理收發信息頁面接收來自Ajax的請求信息,其中包括session里面的用戶信息,接收人信息,以及發送的內容,并將這些信息存入信息表中,其中time字段用now()函數來代替,is_get字段不作為字段寫入,默認為0。圖3所示是其發送信息功能流程圖。
圖2 驗證功能流程圖 圖3 發送信息功能流程圖
2.3 接收信息功能
當客戶端處于用戶登錄狀態,并且處于聊天界面時,瀏覽器定時向服務器發送獲取信息的請求,通過js的window.setInterval()方法設定時間,本次設定為5 000,即為5秒,此時瀏覽器會間隔5秒向服務器發送獲取信息的請求,當服務器接收到瀏覽器的請求后,開始連接數據庫,并通過用戶信息,在數據庫的信息表中查找接收人是當前用戶的記錄,同時is_get字段的值必須為0,每取出一條,將該記錄中的is_get的值置1,在讀取之后,通過AIAX回調函數,使用DOM將信息更新到聊天界面[4],其中每條信息都是拼接返回,避免覆蓋上一條信息。
接收信息功能流程圖如圖4所示。
圖4 接收信息功能流程圖
2.4 Ajax
Ajax是一種用于給用戶更好體驗,交互性更強的Web應用程序技術,Ajax的本質是異步的Javascript代碼配合XML用于Web交互,使用Ajax使客戶端接收信息,獨立于網頁,不需要刷新整個網頁就可以得到來自服務器的交互信息[5-8]。它不是新技術,但是能夠給Web體驗錦上添花[9]。即時聊天系統需要刷新頁面才可以收到信息,這對于用戶是不可接受的,并且極大地降低了用戶體驗,運用Ajax是此系統的核心解決方案。
如圖5所示,在聊天窗口點擊發送信息按鈕時,瀏覽器將請求轉移到Ajax引擎,由Ajax引擎發送請求,即實例化后的XMLHttpRequest對象[10],服務器信息處理頁面收到Ajax引擎的請求到MySQL數據庫信息表中取出對應信息并轉化為XML形式,返回給Ajax引擎,通過DOM將返回到Ajax引擎的信息更新到瀏覽器的聊天窗口,此過程中,瀏覽器沒有執行刷新。
圖5 Ajax在聊天系統的工作原理
3 結 語
此聊天系統使用WAMP開發環境,基于B/S三層結構開發完成。三層結構很好地將業務邏輯和界面分開,便于后期維護和拓展。收發信息通過Ajax引擎完成,使聊天界面無刷新更新信息。服務器軟件和數據庫選用Apache和MySQL,加上PHP服務器腳本程序,代碼簡潔。實踐證明,系統整體運行良好,無漏接漏發信息。當前傳統服務行業發展的大趨勢是與互聯網融合,網頁即時聊天系統,輕量級聊天,功能專一,無需下載軟件,通過瀏覽器即可完成信息交流,網頁即時聊天系統有著不錯的應用環境和廣大的市場前景。
參考文獻
[1] 麥因泰.php語言精粹[M].劉濤,丁靜,譯.北京:電子工業出版社,2012.
[2] luke welling,laura Thomson.php和mysql web開發(第四版)[M].武欣,譯.北京:機械工業出版社,2009.
[3](英)鮑爾斯.php動態網頁設計(第二版)[M]. 陳寶國,盛海艷,張冠楠,譯.北京:人民郵電出版社,2012.
[4]Joshua Eichorn.深入理解Ajax-基于Javascript的RIA開發[M].北京:人民郵電出版社,2007:4-5.
[5]王振興,黃靜.基于php和服務器推技術的web即時聊天系統[J].計算機系統應用,2012,21(12):17-21.
[6]陳穎,唐啟濤,彭利紅.Ajax在Web聊天系統中的應用[J].電腦知識與技術,2011,7(1):142-145.
[7]汪維富.基于Ajax的局域網內聊天系統建模設與設計[J].福建電腦,2013(8):130-131.
[8]胡楠.網頁即時聊天系統的設計與實現[J].信息與電腦(理論版),2015(7):19-20.
[9] Lee Babin.Ajax與PHP基礎教程[M].北京:人民郵電出版社,2007:5-6.
[10] Dave Crane,Bear Bibeault.Ajax實戰實例詳解[M]. 賀師俊,許超,金擘,譯.北京:人民郵電出版社,2008:6-7.