◆余熊峰 陳奇秀 李一凡 劉進芬
P2P網絡線上心理咨詢室的設計與開發
◆余熊峰 陳奇秀 李一凡 劉進芬
(南京工業大學浦江學院 江蘇 210000)
傳統的心理治療有著治療費用高、因相關資源短缺人均治療時間較短、有效治療效果差、治療手段單一且大多心理藥物副作用較大等缺點。該系統使用NAT穿透技術搭建P2P網絡,實現線上的心理咨詢,改變傳統門診方式,達到提到資源利用率的目標,提高人均治療時間,強化治療效果,使患者更全面地了解各種無藥物治療手段,本文介紹了P2P和網絡在線聊天的相關理論和技術,描述了基于P2P線上心理咨詢室的開發過程以及所具備的優勢。
NAT穿透;P2P網絡;無藥物化治療;線上心理咨詢
隨著計算機、互聯網技術的迅速發展,許多行業逐漸改變傳統的行業模式。其中也包括了醫療,心理醫療資源一向處于極度短缺的狀態,特別是心理咨詢服務資源匱乏,心理咨詢師緊缺,并且國內各個區域資源分布不均收費昂貴。該系統是一種基于P2P網絡的在線心理咨詢室。用戶不需要在線下去心理咨詢室,只需要在家里擁有一臺電腦,用戶便能半自助解決自己的心理問題。線上心理咨詢室的開發既方便了醫生也方便了患者,患者不再需要前往心理咨詢室,減少了車旅的費用與路程上花費的時間。在一定程度上加速了心理咨詢室的全國普及。如此線上心理咨詢室的建立對我國解決心理問題奠定了基礎。在我國信息產業迅速發展的同時,線下的心理咨詢室在中國幅員遼闊的現狀下已顯得不相適應,采用IT技術提高服務質量和心理咨詢水平勢在必行。
(1)P2P網絡
P2P網絡即對等網絡[1],是一種對等客戶端的分布式架構,可以實現分配任務和工作負載的功能。同時,P2P網絡是一種組網或者可以稱之為網絡形式,由計算模型在計算機的應用層形成。對等網絡區別于當前的客戶端-服務端的網絡C/S結構的思想。他們之間的本質的區別是,P2P網絡的整個結構中不存在中心節點(或中心服務器)。
在P2P的網絡架構中,所有計算機連接成chord網絡環形,都擁有相同的功能和地位,沒有主次的分別,可作為服務器提供共享資源給P2P網絡中其他計算機,也可作為客戶端,接收“服務器”的資源。因此,整個P2P網絡不需要依賴于專用的集中服務器,也不需要專用的工作站。P2P網絡結構中的每一臺計算機既可以作為網絡服務的請求者,同時也可以對其他計算機的請求做出響應,并為他們提供資源、服務和內容。通常這些資源和服務包括:共享和交換信息、計算資源、共享存儲、共享網絡以及共享打印機等。P2P網絡優勢主要體現在六個方面:高性價比性,可擴展性,健壯性,非中心化,負載均衡和隱私保護。
(2)SpringBoot框架
SpringBoot[2]是在2013年由Pivotal團隊開始進行開發的,并且在2014年發布出了第一個版本的框架。SpingBoot框架的開發是在Spring4.0的基礎上所進行的,它不僅繼承了Spring框架原本所擁有的特性,而且通過簡化配置環境的操作進而簡化了SpringBoot項目整個開發過程。同時還解決了依賴包版本沖突和引用的不穩定等重大問題。
(3)TCP協議與UDP協議
TCP和UDP協議是TCP/IP協議[3]的核心。TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬于傳輸層協議。其中的TCP協議提供IP數據的可靠性傳輸,而UDP提供的是不可靠傳輸。TCP通過使用面向連接、端到端和可靠的數據包發送,達到其可靠性的目的。詳細地講,它在開始數據傳輸前為需要發送的數據包開通一條專用性的通道,再開始進行數據發送和傳輸;它提供數據流傳送、多路復用、全雙工、有效流控和可靠性。UDP不提供差錯恢復、可靠性以及流控功能。總體來說,TCP適用于對可靠性要求比較高的應用,而UDP適用的則是對可靠性要求較低應用,且經濟上UDP相比于TCP開銷更小。
該系統采用idea開發環境,搭建Spring Boot框架,基于此進行前后端分離開發。使用Java語言進行后端開發,前端采用HTML+CSS+JavaScript技術設計。數據庫使用的MySQL數據庫[4],通過JDBC連接數據庫[5]。使用到P2P對等網絡技術,實現網上的即時通訊,主要利于視頻等大數據包的傳輸,每個用戶都可作為一個服務器。例如:患者3在平臺上咨詢心理咨詢師1,經過一段時間問診后,心理咨詢師得出病情病因并需要向患者發送相關的心理療法視頻或其他文件。這時患者3和心理咨詢師1之間直接構建一條文件傳輸通道,心理咨詢師1作為服務器,向患者傳輸數據,且不通過公共服務器,大大降低服務器負載。

圖1 P2P對等網絡架構
P2P對等網絡是點對點的數據傳輸,繞過了公網服務器,所以需要使用到NAT穿透技術。本文設計的系統使用的是UDP穿透技術稱為UDP打洞技術。
在沒有穿透NAT之前,用戶A和用戶B之間通信是需要通過服務器的,用戶A和用戶B在登錄上線后,在它們的UDP數據包中含有各自的私有IP地址和端口號。服務器在收到數據包的同時根據用戶A與B的IP地址和端口號,記錄下A、B的公網IP地址和端口號,這是經過NAT設備映射后的。在拆包時得到了A、B的私有IP地址和端口號,記錄如下:
客戶端A:私網地址 10.0.0.1 端口:4321 公網地址 155.99.25.11 端口:6200
客戶端B:私網地址 10.1.1.3 端口:4321 公網地址 138.76.29.7 端口:3100
用戶A想和用戶B建立一個直接連接通道,用戶A就向服務器發送一個請求包,請求服務器的協助,請求消息內包含了用戶B的ID。服務器端收到請求后,就開始在數據庫中查詢并向A發送B的公有和私有地址信息的“打洞通知”,同樣向B發送A的公有私有地址信息的“打洞通知”。它們收到通知消息后,分別向對方發送打洞 UDP 包(此 UDP 包不包含數據部分)。 A 和B 的 NAT 設備中建立起了與B和A相應的為對方建立一個映射項[7]。
當A、B之間發送的最后一個 UDP 包到達后,在A與B的NAT 間就建立了一個映射連接。A、B就能直接進行通訊,不再需要服務器了。

圖2 UDP穿透技術后
(1)基本信息管理模塊:包括用戶登錄注冊與維護用戶信息的功能,每位用戶,在剛登錄平臺時,需注冊,輸入自己信息,每名用戶擁有自己獨有的賬號id與其對應的密碼。在登錄后,會給一份關于心理方面的測試,根據測試結果為不同的人提供不同的推薦及方案。
(2)搜索功能模塊:在搜索框內輸入需要查詢的內容,包括用戶查詢與博客查詢,輸入相關內容的關鍵詞,系統自動化進行搜索框內文字提取和模糊查詢,并且向客戶端返回搜索結果的視圖,完成此次檢索操作。
(3)P2P消息系統:此作為咨詢室系統的主要功能,包含接收消息功能和發送消息功能。為了提供多語言支持,客戶端與服務器端都使用 UTF8 字符編碼,對于客戶端輸入的非UTF8編碼的字符,進行字符集編碼轉換操作后再進行消息系統交互。
(4)P2P文件傳輸系統:該系統軟件用戶,很多時候都需要傳輸大文件,有幾百 MB 甚至幾個G,這個時候,如果通過公網中轉,顯然會拖慢整體的網速,同時文件傳輸速度也得不到保證,這個時候如果采取P2P的方式進行文件傳輸,則大大節約了網絡資源,同時資源的安全性也能夠得到保障。
(5)博客分享模塊:每個賬戶擁有自己的獨有的博客分享空間,博客內容可隨意由自己編寫,并且可以對博客的查看權限進行調整,博客內容可包含卻不僅有:文字、視頻、圖片等。
(6)線上支付模塊:支持患者網絡線上二維碼支付問診費用,由相關專業心理咨詢人員對患者病情進行診斷,并給予專業性建議,同時向患者推送相關治療知識與視頻等的治療資源。
賬戶分為三類:病患、專業咨詢師、超級管理員。其中病患賬戶在申請注冊時,需要填寫一份相關考察問卷,初步評定病情情況,為后續心理咨詢師問診環節提供診斷依據。不同的用戶擁有的權限不同,只有滿足系統權限[8]的用戶才能進行對應操作。
(1)系統性治療方法的講解,該項目可實現各種病癥針對性長時間自助治療,收錄多種放松技巧,從而根治心理疾病。比如可將心理學上著名的行為認知療法、冥想訓練整理成視頻,讓患者擁有一個完整有效的治療方案。
(2)改變傳統門診方式:對比于每年都在增長的心理疾病患病人數,心理醫生人數卻并沒有相應增長,導致治療資源稀少。醫生每日的門診病人數較多,分配給每名患者的治療時間也就減少。走入診斷、簡單開導、處方開藥的流程,全流程時間一般處于10~30分鐘。患者得不到有效治療,同時心理疾病藥物普遍存在副作用。在專業心理學上,醫生并不建議輕度和部分中度患者使用并服用心理類治療藥物。可基于目前國內的行業情況,這種治療已成為基本主流。該項目通過計算機網絡技術搭建為醫患交流網上咨詢平臺,患者通過醫生分享的視頻學習放松方法、了解心理知識,進行無藥化自助治療。
(3)線上咨詢提升效率:在該項目提供的線上咨詢問診,患者可以在更短時間內完成掛號,問診步驟。同時使得醫生診斷的患者人數提升,緩解醫療資源緊張的情況。
(4)幫助患者走進心理門診:國內社會對于心理疾病有著一定的歧視和嘲笑心理,包括很多患者抗拒進入醫院進行心理咨詢。這款線上心理咨詢平臺,提供了在家咨詢的可能性。
(5)價格較低:與國內大多數心理診室幾百元每小時的收費比較,收費可降低80%以上,有很好的推廣和盈利的項目基礎。
總體來說,線上心理咨詢室是基于P2P網絡和socket等技術建立而成,擁有線上看診、線上咨詢、博客分享和線上支付等主要功能。線上的心理咨詢室一方面減小了患者的看診壓力,為心理疾病患者增加了一條看診的途徑,并且由于價格較低,也減小了他們的經濟壓力。另一方面也減小了醫院的人流壓力,醫生可在線為患者診斷。如今國內社會對于心理治療方面愈來愈重視,且在心理疾病患者人數龐大的前提下,與之對比的是心理咨詢師的資源緊缺。該系統無論是從商業盈利方面或是社會意義方面都有巨大的發展前景。同時也存在著一些問題,對于某些情況比較嚴重的患者,藥物治療方面是必不可少的,在這方面系統無法給予過多的幫助。
[1]賀文華,劉浩,賀勁松.P2P網絡現狀與發展研究[J].軟件工程,2019,22(04):1-5.
[2]熊永平.基于SpringBoot框架應用開發技術的分析與研究[J].電腦知識與技術,2019,15(36):76-77.
[3]姚軍,毛昕蓉,趙小強,郭芳華. 現代信息網[M].人民郵電出版社,2016:313.
[4]Candra Dwi Aprida,Febriliyan Samopa. Pembuatan Sistem Informasi Beasiswa Internal Direktorat Jenderal Perbendaharaan Menggunakan PHP dan MySQL[J]. Jurnal Teknik ITS,2013,2(2).
[5]余崢,鮑正德,李晨曦. 淺析 JDBC 連接 MySQL 的增刪改查操作[J]. 計算機系統網絡和電信,2019,1(2).
[6]張澤鵬. P2P網絡中NAT穿透技術的研究與實現[D].北京郵電大學,2010.
[7]宋盈,馬睿.運營級NAT44設備的部署方案研究與測試[J].現代電信科技,2013,43(03):71-77.
[8]朱軍紅,唐明根,張小玲.信息系統中的角色權限管理設計[J].中國管理信息化,2019,22(23):138-140.
南京工業大學浦江學院2020年度大學生創新創業訓練計劃項目(PJ20201390526).