999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SpringBoot 和WebSocket 的點對點聊天系統研發與部署

2020-07-04 08:53:24黎志偉
科學技術創新 2020年18期
關鍵詞:界面用戶信息

黎志偉

(云南師范大學 信息學院,云南 昆明650000)

1 概述

目前,隨著軟件市場的不斷擴大,各式各樣的網站、小程序、APP 應運而生,為了滿足軟件快速實現并簡捷部署的需求,大量免費開源項目和新技術被運用來實現軟件的快捷開發與部署,這種方式不僅縮短了平均開發周期,而且降低了該部分功能出現錯誤的可能性。本文介紹的是在web 平臺下使用docker 引擎和web socket 通訊協議開發并部署一款聊天系統,即在項目中引入web socket 協議進行對應的接口實現,最后服務器安裝docker 引擎來完成系統部署。

2 docker 引擎與web socket 協議介紹

Docker 容器是一個開源的應用容器引擎,讓開發者可以以統一的方式打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何安裝了docker 引擎的服務器上(包括流行的Linux 機器、windows 機器),也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似iPhone 的app)。幾乎沒有性能開銷,可以很容易地在機器和數據中心中運行。最重要的是,他們不依賴于任何語言、框架包括系統。Web Socket 是一種在單個TCP 連接上進行全雙工通信的協議,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,并進行雙向數據傳輸。

3 系統總體設計

聊天系統的設計主要運用了web socket 的On open 方法和On message 兩個方法,客戶端首先生成一個不重復的UUID 作為用戶名去與服務端建立連接。服務端收到連接并維護所有客戶端的連接,連接成功后客戶端加載所有與服務端建立了連接的用戶,之后客戶端之間再以服務端做中轉站其它客戶端實現通訊,最后將系統部署在docker 容器中。本系統事先會準備一些圖片,作為默認用戶頭像,用戶連接以[key,value]的存儲方式保存在服務端特定集合中,本次會話的已讀和未讀消息也會保存在客戶端特定集合中。由于本次系統的重點不在于客戶端界面,客戶端制作為了節省時間,系統運用了一些網絡上開放的前端組件,主要包括3 個界面,系統初始界面、用戶列表界面、聊天主體界面。系統的界面流程圖如圖所示。這里的一些組件已經定義好了基礎點擊事件,但系統還需對部分業務邏輯代碼進行擴展,比如點擊事件;同時增加了系統需要實現的某些功能,主要增加了未讀消息數量提示功能,未讀/已讀消息保存功能,未讀消息提示清空功能等。

4 主要功能實現

4.1 通訊功能。若A 用戶要與B 用戶進行通訊,A 用戶首先需要點擊好友列表中的B 用戶進入到聊天界面,A 用戶在發送消息區域輸入要發送的內容后,通過回車事件調用本地的send 方法,同時將發送的內容添加到聊天信息展示區域的左側,之后進入到服務端的On message 方法,通過消息接收方B 的send text 方法將消息發送到接收方B,接收方B 的客戶端進行一系列判斷,若都通過,直接將收到的消息添加到聊天消息區域的右側。

4.2 臨時保存聊天記錄。為了不影響用戶的聊天體驗,本系統還要實現保存當前用戶和其它用戶的聊天信息;本文提出兩種方案,第一種就是在當前用戶的本地客戶端用特定集合來保存聊天信息;第二種是將所有消息以特定的格式在服務端做持久化處理,并設置過期時間;本文選取第一種簡單的方案來處理。還有一點需要注意由于聊天信息保存在客戶端,也未作持久化處理,在客戶端保存的聊天信息失效時間點是用戶關閉了瀏覽器,因為聊天信息是保存在本地特定的集合中,當用戶關閉瀏覽器之后,將會丟失這些信息。

4.3 加載臨時保存的聊天信息和未讀消息。有了臨時保存聊天信息方案,若A 用戶切換聊天對象后,能恢復與B 之前的聊天信息,同時還要檢查B 是否給A 發消息且A 未讀這些消息,若有,在恢復完與B 之前的聊天信息后,還需要加載未讀消息。具體步驟如下:通過A 的UUID 與B 的UUID 組合起來從已讀消息集合中取出聊天信息Messages。遍歷Messages,通過每一條消息中的標識位(not Mine 和空)來判斷添加在聊天的界面左側或者右側。通過B的UUID 去遍歷未讀消息集合,消息需滿足標志為未讀,這是為了避免重復加載。這里是直接將未讀消息添加到聊天界面的右側,同時該條消息會被添加到對應的已讀消息集合。

4.4 加載所有在線用戶。A 用戶運行系統,首先調用客戶端的On open 方法以隨機生成的UUID 碼作為用戶名與服務端建立連接;服務端接收到客戶端的連接,同時將用戶名和對應的session 保存在一個特定的[key,value]集合中;之后當前客戶端加載所有在線用戶并以列表的形式展示,同時通過調用服務端的On message 方法通知其它所有在線的用戶,A 上線了需要重新加載好友列表。

4.5 未讀消息提示。先逐一遍歷本地未讀消息的集合,每遍歷一條消息之后都會遍歷一遍A 用戶的在線好友列表,如果未讀消息的發送方與A 用戶的好友列表中某一個用戶名相等,則在A 用戶對應的好友列表上將未讀消息數量上加一。如圖所示。

未讀消息提示

4.6 未讀消息清空。若A 用戶打開與B 用戶的聊天界面,后臺會加載B 發送給A 且A 未讀的消息,加載完B 發過來的消息后,需要把B 對應的未讀消息數量設置為0。

5 docker 容器化部署

首先,在linux 服務器上安裝docker,修改鏡像為阿里云私人鏡像地址,安裝完成后,直接拉取一個標準的tomcat 鏡像下來;安裝Docker-compose,它是docker 的服務編排工具,主要是用來構建多個服務。在docker-compose.yml 文件中寫好對tomcat 的配置,其中有一個比較重要的屬性就是數據卷屬性,要設置宿主機目錄和容器目錄,這里的容器目錄指的是tomcat 的webapps 目錄,可以簡單理解為如果在宿主機目錄下放了項目war 包,那么容器目錄下也會有,起一個共享數據的作用,知道了這個作用,那么直接將war 包放在服務器指定的目錄下即可。一切準備就緒,通過docker-compose啟動我們的服務。如果后期項目需要多個tomcat,那是不是在docker-compose 的配置文件中配置多個tomcat 即可呢,如果又需要mysql,同樣可以加進來。只需要一個命令即可啟動配置文件中所有定義好的服務,非常簡捷。當然它的好處還有很多,這里就不一一列舉了。

6 結論

在整個實現過程中,編碼不是特別規范,比如在某些地方采取拼接字符串來實現一些需求,這樣的后果就是若后期出現大規模修改會出現bug,修改起來費時費力,因此在以后的開發中應該盡可能規劃好自己的開發流程,同提升編碼的健壯性。此外,本系統沒有采用設計模式,一切采用最基本的編碼方式,旨在于給那些學習即時通訊的同學提供一種參考,能夠快速入門。

猜你喜歡
界面用戶信息
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
人機交互界面發展趨勢研究
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 亚洲人成网站在线播放2019| 免费无码网站| 久久国产高潮流白浆免费观看| 日韩精品一区二区深田咏美| 8090午夜无码专区| 午夜福利视频一区| 成年人视频一区二区| 特级毛片免费视频| 高清久久精品亚洲日韩Av| 亚洲欧美人成电影在线观看| 久久99精品久久久久纯品| 欧美一区中文字幕| 国产精品va免费视频| 亚洲综合激情另类专区| 一边摸一边做爽的视频17国产| 欧美日本中文| 国产成人欧美| 91麻豆精品国产高清在线 | 99在线小视频| 国产福利小视频高清在线观看| 国产精品欧美亚洲韩国日本不卡| 亚洲无线国产观看| 粉嫩国产白浆在线观看| 免费无码又爽又黄又刺激网站 | 日韩精品专区免费无码aⅴ| 人妻中文久热无码丝袜| 99久久精品久久久久久婷婷| 亚洲无码91视频| 欧美日韩另类国产| 欧美69视频在线| 五月六月伊人狠狠丁香网| 国产精品黑色丝袜的老师| 欧美国产成人在线| 波多野结衣无码AV在线| 人妻出轨无码中文一区二区| 亚洲综合日韩精品| 99久久精品视香蕉蕉| 久久亚洲AⅤ无码精品午夜麻豆| 伊人蕉久影院| 亚洲视频在线网| 免费看美女毛片| 狠狠做深爱婷婷久久一区| 青青青国产精品国产精品美女| 亚洲aaa视频| 亚洲午夜福利在线| 亚洲综合色婷婷中文字幕| 国产在线精品人成导航| 欧美日韩久久综合| 国产玖玖玖精品视频| 91伊人国产| 亚洲色图欧美| 国产成人福利在线视老湿机| 91麻豆国产精品91久久久| 国产人成乱码视频免费观看| 国产97公开成人免费视频| 欧美精品成人| 四虎精品免费久久| 91欧美亚洲国产五月天| 手机在线国产精品| 免费观看国产小粉嫩喷水| 中文字幕人成人乱码亚洲电影| 99久久免费精品特色大片| 国产美女视频黄a视频全免费网站| 亚洲欧美日韩成人高清在线一区| 中文精品久久久久国产网址| 国产微拍一区二区三区四区| 东京热高清无码精品| 国产九九精品视频| 成人第一页| 精品视频福利| 自慰高潮喷白浆在线观看| 国产又黄又硬又粗| 免费Aⅴ片在线观看蜜芽Tⅴ| 国产正在播放| 青青青国产精品国产精品美女| 亚洲成人在线免费观看| 久久国产香蕉| 丁香六月激情综合| 久久久受www免费人成| 伊人久久综在合线亚洲2019| 91精品国产一区| 97在线观看视频免费|