簡(jiǎn)單聊天軟件, 使用express + cocos2dx

也是閑得蛋疼, 自己編寫了一個(gè)可以跑的聊天軟件(超級(jí)簡(jiǎn)易, 能添加好友, 發(fā)送文字, 離線接受消息).

1. 功能

  1. 用戶注冊(cè)
  2. 搜索/添加好友
  3. 與好友進(jìn)行文字聊天

2. 用到技術(shù)

采用C-S架構(gòu)
客戶端: cocos2dx-lua
服務(wù)器: mysql + sequelize + express

數(shù)據(jù)通訊方式: socket, http-json

3. 簡(jiǎn)要描述

  1. 數(shù)據(jù)庫以及表
    數(shù)據(jù)庫使用mysql, 開源, 好用
    表主要有下面3張:
    (1) 首先是用戶表, 涉及uid, uname, password, email等
    (2) 然后是好友表, 主鍵自然增長, 有srcUid, destUid等
    (3) 然后是消息表, 包括消息id, 類型, 狀態(tài)(是否已讀), srcUid, destUid, 發(fā)送時(shí)間等
  2. ORM采用 sequelize
    如果討厭寫sql語句(比如我這種渣渣), 可使用ORM代替
    之前有過sequelize的簡(jiǎn)單介紹:傳送門
    主要作用是將領(lǐng)域模型與數(shù)據(jù)庫對(duì)應(yīng)起來
    舉個(gè)例子, "用戶(User)"是一個(gè)模型, 在數(shù)據(jù)庫中也對(duì)應(yīng)一張用戶表, 因此用sequelize可以將模型與數(shù)據(jù)庫表關(guān)聯(lián)起來, 之后的有關(guān)數(shù)據(jù)庫操作(例如新建用戶), 只需要按照sequelize方式很自然地做到
  3. 后端采用express框架
    js給人的感覺就是快速好上手, 很多東西可以直接用, 它都自帶得有. express輕量常用, 也很好上手
    將后端大致分為3層:
    (1) controller層: 使用express框架中的route.js, 將web請(qǐng)求與后端服務(wù)層連接, 后端的數(shù)據(jù)也通過這些controller返回給請(qǐng)求者
    (2) service層: controller穿過來的任務(wù)有些是重復(fù)的, 有些又是比較復(fù)雜的, 還有考慮到有些業(yè)務(wù)也可能會(huì)變動(dòng), 因此寫了各種manager.js來處理這些請(qǐng)求
    (3) model層: 各種領(lǐng)域模型放在這里, 如本例子里的User, Message, Friend等, 跟數(shù)據(jù)庫和服務(wù)層關(guān)聯(lián)
    舉個(gè)例子,
    對(duì)于"用戶請(qǐng)求添加好友"這個(gè)操作, 首先請(qǐng)求者發(fā)來請(qǐng)求, 然后route目錄下的friend.js(controller)將該請(qǐng)求傳遞給FriendManager通知要添加好友, FriendManager調(diào)用添加好友服務(wù)(service), 該服務(wù)通知model層的FriendRequest模型(model), model在數(shù)據(jù)庫記下這條記錄, 最后一層層返回, 最后route.js(controller)向請(qǐng)求者通知"添加好友請(qǐng)求的消息已發(fā)送"
  4. 客戶端使用cocos2dx-lua
    簡(jiǎn)單輕快好上手, 由于自己是做這個(gè)的, 又很喜歡lua, 就用這個(gè)了
    客戶端相當(dāng)于簡(jiǎn)易播放器, 負(fù)責(zé)數(shù)據(jù)展示.
    客戶端頁面顯示就是這一塊了, 由于沒有UI設(shè)計(jì), 所以界面很糙, 但炫酷的界面無非是播放器好看一點(diǎn), 這個(gè)需要好的UI呀
    主要分為三個(gè)部分:
    (1) 頁面
    每一個(gè)頁面都對(duì)應(yīng)一份.lua文件, 這樣的好處是只用關(guān)心頁面, 改動(dòng)UI, 不需要擔(dān)心改變邏輯
    (2) 控制器
    對(duì)于從后端拉取的數(shù)據(jù)類的接口, 從頁面里分離出來, 只關(guān)注接口的改動(dòng), 還有一些簡(jiǎn)單的邏輯功能也放在這里, 改動(dòng)邏輯不用擔(dān)心改了頁面
    (3) 數(shù)據(jù)模型
    對(duì)于一些多個(gè)頁面常用的數(shù)據(jù)模型(如User), 不必要每次都從后端拉取, 只有更新的時(shí)候重新從后端拉取, 使用單例模式封裝起來, 保證各個(gè)頁面可以訪問

4. 展示

聊天用戶Alice
聊天用戶BOB

服務(wù)器架設(shè)在騰訊云上, 一個(gè)app在cocos2dx開發(fā)工具player上跑, 一個(gè)在藍(lán)疊模擬器上跑. 發(fā)現(xiàn)藍(lán)疊上的時(shí)差有八個(gè)小時(shí), 估計(jì)地區(qū)設(shè)置在本初子午線那里了.
另外, 客戶端還使用了小型數(shù)據(jù)庫sqlite3, 用來本地存儲(chǔ)消息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歉嗓,一起剝皮案震驚了整個(gè)濱河市鉴分,隨后出現(xiàn)的幾起案子带膀,更是在濱河造成了極大的恐慌,老刑警劉巖伦糯,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敛纲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡淤翔,警方通過查閱死者的電腦和手機(jī)佩谷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抡谐,“玉大人,你說我怎么就攤上這事框喳∠锰常” “怎么了乍惊?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵润绎,是天一觀的道長。 經(jīng)常有香客問我莉撇,道長,這世上最難降的妖魔是什么其障? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任励翼,我火速辦了婚禮辜荠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伯病。我一直安慰自己,他們只是感情好午笛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布季研。 她就那樣靜靜地躺著,像睡著了一般惹谐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氨肌,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音卿叽,去河邊找鬼恳守。 笑死,一個(gè)胖子當(dāng)著我的面吹牛催烘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伊群,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舰始,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了枕稀?” 一聲冷哼從身側(cè)響起及老,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎食铐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虐呻,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斟叼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年春寿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谢床。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖出革,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骂束,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布展箱,位于F島的核電站析藕,受9級(jí)特大地震影響凳厢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜先紫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一筹煮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧本冲,春花似錦劫扒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至幼驶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盅藻,已是汗流浹背汹族。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工顶瞒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留元旬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓坑资,卻偏偏與公主長得像,于是被迫代替她去往敵國和親袱贮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容