作为后端开发人员建立一个项目并不像前端开发人员那样喜欢。因此,我决定创建一个全栈应用程序,但是命令行是用户界面,HTTP和套接字服务器是后端。该项目一直在我的脑海
项目概况
Tarminal-chat-app是一个命令行聊天应用程序,可以在公共聊天室中的用户之间进行实时通信。该应用程序旨在提供命令行的无缝聊天体验。
命令行界面是使用commander.js
和inquirer.js
构建的。它使用Axios
将HTTP请求向服务器提出,而socket.io-client
库则用于与服务器建立实时通信。
该服务器是一种使用socket.io
库来启用与客户端实时通信的快递应用程序。它使用mongoose
将用户数据存储在mongodb上,bcrypt
用于哈希用户密码,jsonwebtoken
用于身份验证和redis
用于令牌存储。
项目目标
该项目的主要目标是构建一个命令行应用程序,使用户可以在几个不同的终端互相聊天。
我想到的功能是私人聊天,小组聊天和公共聊天消息。
我进行了一些研究,并对该应用程序的外观进行了一般概述。
从我的研究中,我打算将用户界面作为NPM软件包,服务器在网上部署在某个地方,以便用户可以从各自的终端相互通信。
最初,我不知道如何实现该项目的目标。但是,作为一个了解一些基本原理的软件开发人员,我认为这是我可以做的。
在开发过程中,我改变了对功能的想法,并且仅实现了公共聊天消息传递功能。此功能允许任何用户创建一个聊天室,该聊天室将添加到任何用户可以加入并开始互相发送消息的聊天室列表中。
项目功能
项目的关键特征是:
-
身份验证:每个用户在注册过程中必须提供电子邮件,用户名和密码。它允许他们在后续请求中使用用户名和密码登录。
-
用户名:此功能允许用户唯一标识。成功登录后,它被用来识别聊天室中的每个用户。
-
创建和加入公共聊天室:
Create-Chat-Room
是一个主菜单选项,允许任何用户创建聊天室并添加到其他用户可以加入的聊天室列表中。Join-Chat-Room
也是一个主菜单选项,但显示可以连接的聊天室列表。使用两个选项中的任何一个,用户将自动带到聊天消息接口。 -
聊天消息接口:此功能允许用户在命令行中键入基于文本的消息。仅在用户成功创建或加入公共聊天室之后才能启用它。
-
实时聊天:
socket.io
和socket.io-client
库使此功能可以从命令行中获取用户类型的消息,并将它们实时传输给聊天室中的所有用户。 -
房屋和退出选项:在整个应用程序中都可以使用“退出”选项。可以通过在身份验证和家庭菜单中选择该选项,也可以通过在聊天消息接口中键入
-e
来访问它。 “家庭”选项只能通过键入-h
在聊天消息界面中访问。
项目结构
模型视图控制器(MVC)设计模式启发了项目的结构。该项目分为两个主要文件夹:/server
和/client
。
服务器文件夹包括/src
文件夹,其中数据库模式,配置和REST API Logic Live;一个/test
文件夹,其中包含API的测试用例; app.js
,配置了Express App; socketManager.js
,在其中为服务器进行插座事件管理; .env
,其中包含用于数据库和身份验证的环境变量;和server.js
,这是服务器的入口点。
客户端文件夹由/src
文件夹组成,该文件夹包含应用程序主要功能的逻辑,例如身份验证,用户界面和聊天消息界面; attachEvents.js
,其中包含客户端的插座事件;和commander.js,
是用户界面的节点脚本。
在下一部分中,我深入研究项目的服务器代码库。