美文网首页
简单聊天软件, 使用express + cocos2dx

简单聊天软件, 使用express + cocos2dx

作者: 沫晚霞光 | 来源:发表于2019-11-30 17:06 被阅读0次

也是闲得蛋疼, 自己编写了一个可以跑的聊天软件(超级简易, 能添加好友, 发送文字, 离线接受消息).

1. 功能

  1. 用户注册
  2. 搜索/添加好友
  3. 与好友进行文字聊天

2. 用到技术

采用C-S架构
客户端: cocos2dx-lua
服务器: mysql + sequelize + express

数据通讯方式: socket, http-json

3. 简要描述

  1. 数据库以及表
    数据库使用mysql, 开源, 好用
    表主要有下面3张:
    (1) 首先是用户表, 涉及uid, uname, password, email等
    (2) 然后是好友表, 主键自然增长, 有srcUid, destUid等
    (3) 然后是消息表, 包括消息id, 类型, 状态(是否已读), srcUid, destUid, 发送时间等
  2. ORM采用 sequelize
    如果讨厌写sql语句(比如我这种渣渣), 可使用ORM代替
    之前有过sequelize的简单介绍:传送门
    主要作用是将领域模型与数据库对应起来
    举个例子, "用户(User)"是一个模型, 在数据库中也对应一张用户表, 因此用sequelize可以将模型与数据库表关联起来, 之后的有关数据库操作(例如新建用户), 只需要按照sequelize方式很自然地做到
  3. 后端采用express框架
    js给人的感觉就是快速好上手, 很多东西可以直接用, 它都自带得有. express轻量常用, 也很好上手
    将后端大致分为3层:
    (1) controller层: 使用express框架中的route.js, 将web请求与后端服务层连接, 后端的数据也通过这些controller返回给请求者
    (2) service层: controller穿过来的任务有些是重复的, 有些又是比较复杂的, 还有考虑到有些业务也可能会变动, 因此写了各种manager.js来处理这些请求
    (3) model层: 各种领域模型放在这里, 如本例子里的User, Message, Friend等, 跟数据库和服务层关联
    举个例子,
    对于"用户请求添加好友"这个操作, 首先请求者发来请求, 然后route目录下的friend.js(controller)将该请求传递给FriendManager通知要添加好友, FriendManager调用添加好友服务(service), 该服务通知model层的FriendRequest模型(model), model在数据库记下这条记录, 最后一层层返回, 最后route.js(controller)向请求者通知"添加好友请求的消息已发送"
  4. 客户端使用cocos2dx-lua
    简单轻快好上手, 由于自己是做这个的, 又很喜欢lua, 就用这个了
    客户端相当于简易播放器, 负责数据展示.
    客户端页面显示就是这一块了, 由于没有UI设计, 所以界面很糙, 但炫酷的界面无非是播放器好看一点, 这个需要好的UI呀
    主要分为三个部分:
    (1) 页面
    每一个页面都对应一份.lua文件, 这样的好处是只用关心页面, 改动UI, 不需要担心改变逻辑
    (2) 控制器
    对于从后端拉取的数据类的接口, 从页面里分离出来, 只关注接口的改动, 还有一些简单的逻辑功能也放在这里, 改动逻辑不用担心改了页面
    (3) 数据模型
    对于一些多个页面常用的数据模型(如User), 不必要每次都从后端拉取, 只有更新的时候重新从后端拉取, 使用单例模式封装起来, 保证各个页面可以访问

4. 展示

聊天用户Alice 聊天用户BOB

服务器架设在腾讯云上, 一个app在cocos2dx开发工具player上跑, 一个在蓝叠模拟器上跑. 发现蓝叠上的时差有八个小时, 估计地区设置在本初子午线那里了.
另外, 客户端还使用了小型数据库sqlite3, 用来本地存储消息

相关文章

网友评论

      本文标题:简单聊天软件, 使用express + cocos2dx

      本文链接:https://www.haomeiwen.com/subject/wxwowctx.html