基于AMQP协议(RabbitMQ Message Broker)的聊天服务器/聊天系统,使用Tornado和RabbitMQ编写了Python。
链接: http://rabbitchat.readthedocs.io/en/latest/index.html
链接: https://pypi.python.org/pypi/rabbitchat
| 作者: | Anirban Roy Das |
|---|---|
| 电子邮件: | [email protected] |
| 版权(C): | 2017年,Anirban Roy Das <[email protected]> |
检查rabbitChat/LICENSE文件中是否有完整的版权通知。
Rabbitchat是一家非常简单的聊天服务器,可以在LAN中本地设置以聊天。它支持在特定时间同时连接的所有参与者之间的公众聊天,并在这些个人参与者的情况下进行私人聊天。
它使用AMQP协议来实现实时消息传递系统。 AMQP以多种语言和许多软件实现,曾经是RabbitMQ,这是实施AMQP协议的消息代理。
连接是使用sockjs协议创建的。 SOCKJS以多种语言实现,主要是在JavaScript中实现的,以实时与服务器进行交谈,该服务器试图在客户端(浏览器)和服务器之间创建双层双向连接。服务器还应实现sockjs协议。因此,使用sockjs-tornado库,该库在龙卷风服务器中公开了sockjs协议。
它首先试图创建一个WebSocket连接,如果失败,则它会退回到其他运输机制,例如Ajax ,长期轮询等。建立连接后,Tornado Server **(sockjs-Tornado)** **通过使用AMQP Python Client client pika ,Pika,Pika,通过AMQP协议,通过AMQP协议连接到RabbitMQ 。
因此,该连接是与龙卷风到兔子的网络浏览器,反之亦然。
| sockjs-client: | 高级Websocket JavaScript客户端 |
|---|---|
| 龙卷风: | 异步Python Web库 + Web服务器 |
| Sockjs-Tornado: | Sockjs WebSocket服务器实现龙卷风 |
| AMQP: | 预先消息排队协议中使用的中间件 |
| 皮卡: | AMQP Python客户库库 |
| 兔子: | 实施AMQP的消息经纪 |
| pytest: | Python测试库和测试跑步者,带有很棒的测试Discobery |
| pytest-flask: | 用于烧瓶应用程序的PYTEST插件,用于使用PYTEST库测试FASK应用程序。 |
| Uber的测试双: | 测试python的双库,这是模拟库的一个很好的替代品 |
| 詹金斯(可选): | 自托管CI服务器 |
| travis-ci(可选): | 免费用于开源ProJecs的托管CI服务器 |
| Docker: | 一种用于更好DevOps的容器化工具 |
安装有两种类型。一个将Rabbitchat用作二进制的人通过从PIP安装并直接在本地计算机中运行应用程序。另一种方法是从Docker运行该应用程序。因此,Docker用例的另一组安装步骤。
要通过您的GIT承诺将秘密和机密数据泄漏,请检查git-secrets 。
这个GIT Secrets项目有助于防止误分泌泄漏。
看,技术规格中提到的技术太多,但是依赖性仅为两个。这是Docker的力量。
步骤1-安装Docker
关注我的另一个GitHub项目,其中提到了与DevOps和脚本相关的所有内容以及设置开发环境以使用Docker。
- 项目:https://github.com/anirbanroydas/devops
步骤2-安装制作
#(MAC OS) $ BREW安装汽车 #(Ubuntu) $ sudo apt-get更新 $ sudo apt-get安装制作
步骤3-安装依赖项
在您的本地开发机上安装以下依赖项,该机器将在各种脚本中使用。
$ pip安装rabbitchat
如果上述依赖项未通过上述命令安装,则使用以下步骤一个一个一个一个一个一个。
步骤1-安装PIP
请按照以下方法安装PIP。其中一个可以帮助您在系统中安装PIP。
- 方法1 -https: //pip.pypa.io/en/stable/installing/
- 方法2- http://ask.xmodulo.com/install-pip-linux.html
- 方法3-如果您通过
brew install python,则PIP已与Python一起安装。步骤2-安装龙卷风
$ pip安装龙卷风步骤3-安装sockjs -tornado
$ pip安装sockjs-tornado步骤4-安装皮卡
$ pip安装皮卡步骤5-安装RabbitMQ
用于
Mac用户1。酿造安装兔子
$ BREW安装RabbitMQ
- 配置RabbitMQ,请按照此链接,此链接。
对于
Ubuntu/Linux用户1。启用RabbitMQ应用程序存储库
$ echo“ deb http://www.rabbitmq.com/debian/ testing main” >> /etc/apt/sources.list.list2。添加软件包的验证键
$ wget -o http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt -key添加 -3。通过上面的新添加来更新来源
$ apt-get更新4。最后,下载并安装RabbitMQ
$ sudo apt-get安装rabbitmq-server
- 配置RabbitMQ,请按照此链接,此链接。
如果您在CI设置中使用该项目(例如Travis,Jenkins),则在每次推动GitHub时,都可以设置Travis Build或Jenkins Pipeline。 Travis将使用.travis.yml文件,Jenknis将使用Jenkinsfile来完成工作。现在,如果您使用的是Travis,然后运行Travis特定的设置命令,并且对于Jenkins,请首先运行Jenkins特定的设置命令。您也可以使用两者在那里进行比较。
设置键从导出所有环境变量的.env文件中读取值。但是您会注意到一个示例env文件,而不是.env文件。确保将env文件复制到.env ,并使用您的实际值更改/修改实际变量。
.env文件不投入git,因为在.gitignore文件中提到了它们,以防止机密数据的任何泄漏。
运行设置命令后,将为您提供许多安全密钥。在继续之前,将这些复制到您的配置文件。
注意:这是一次设置。注意:检查scripts/目录中的设置脚本,以了解提供加密键的环境变量是什么。注意:不要忘记将安全键复制到您的.travis.yml或Jenkinsfile
注意:如果您不想将env的副本执行为.env文件并使用您的真实值更改.env中的变量值,则可以只编辑travis-setup.sh或jenknis-setup.sh脚本并直接更新其值。脚本在scripts/项目级目录中。
重要的是:在部署到远程服务器之前,您必须在本地计算机中运行travis-setup.sh脚本或jenkins-setup.sh脚本。
这些步骤将加密您的环境变量,以保护您的机密数据,例如API键,基于Docker的密钥,部署特定键。
$制作Travis-Setup
这些步骤将加密您的环境变量,以保护您的机密数据,例如API键,基于Docker的密钥,部署特定键。
$制作詹金斯(Jenkins)设定
用法有两种类型。一个将Rabbitchat用作二进制的人通过从PIP安装并直接在本地计算机中运行应用程序。另一种方法是从Docker运行该应用程序。因此,Docker用例的另一组用法步骤。
安装上述依赖项后,并运行可选(如果不使用任何CI服务器)或必需(如果使用任何CI服务器) CI设置步骤,则只需运行以下命令即可使用:
您可以在本地开发机器中运行并测试该应用程序,也可以直接在远程计算机中运行和测试。您也可以在生产环境中运行和测试。
下面的命令将在开发环境中启动所有内容。要在生产环境中开始, -prod为每个制作命令。
例如,如果正常命令make start ,则为生产环境,请使用make start-prod 。对要在生产环境中运行的每个命令进行此修改。
例外:您不能将上述方法用于测试命令,每个环境的测试命令相同。同样, make system-prune命令是独立的,没有生产特定的变化(在所有环境中保持相同)。
开始应用
$干净 $制造 $开始 # 或者 $ docker -compose -d
停止申请
$制作 # 或者 $ Docker-Compose Stop
删除并清洁应用
$干净 # 或者 $ docker -compose rm -force -V $ echo“ y” | Docker系统修剪
清洁系统
$制作系统prune # 或者 $ echo“ y” | Docker系统修剪
检查整个应用程序日志
$制作止回记录 # 或者 $ docker-compose logs-follow- -tail = 10
仅检查Python应用程序的日志
$制作check-logs-app # 或者 $ docker-compose logs-follow--tail = 10 Identidock
通过PIP安装Rabbitchat后,只需运行以下命令即可使用它:
RabbitMQ服务器
1。对于Mac用户
#正常开始 $ RABBITMQ服务器 #如果您想在后台运行 $ RABBITMQ-SERVER-拆除 #开始使用Brew Rervices(不适用于TMUX) $ Brew Services RabbitMQ开始
2。对于Ubuntu/LInux用户
#正常开始 $ RABBITMQ服务器 #如果您想在后台运行 $ RABBITMQ-SERVER-拆除 #开始使用服务 $服务RabbitMQ服务器开始 #停止使用服务 $服务RabbitMQ服务器停止 #使用服务重新启动 $ Service Rabbitmq-Server重新启动 #检查状态 $服务RabbitMQ服务器状态
启动Rabbitchat服务器
$ rabbitchat [选项]
选项
| - 港口: | 聊天服务器将启动的端口号 |
|---|
例子
$ rabbitchat -port = 9191
停止Rabbitchat服务器
单击Ctrl+C停止服务器。
注意:仅使用Docker方法进行测试。无论如何,无论是使用Docker方法还是独立方法运行应用程序都不重要。测试独立于此。
现在,测试是项目的主要交易。您可以通过多种方式进行测试,即,使用以下命令中提到的make ,该命令可以自动化所有内容,并且您不必知道其他任何内容,例如使用了哪些测试库或框架,如何直接或通过docker容器进行测试,或者可能是使用tox的虚拟环境。不需要知道。
另一方面,如果您想对测试进行精细的控制,则可以通过使用pytest命令直接运行它们,或者通过tox命令在不同的Python环境中或使用docker-compose命令运行差异化测试。
但是,运行“命令”是Lawasy的策略和该项目的方法。
注意:可以直接使用托克斯,在不使用docker容器的地方。尽管我们可以尝试在我们使用的命令中运行测试的测试对手中,但是我们必须更改Dockerfile并安装所有python依赖项,例如python2.7 , python3.x ,然后从make容器中运行tox容器,然后从docker容器中运行tox命令,然后运行pytest的测试,该测试是在我们内部运行的,该命令是在我们内部运行的。
警告:直接使用make命令而不使用tox的唯一警告是,我们只是在单个python环境中测试该项目,Nameley python 3.6 。
测试一切
$进行测试
任何其他不使用Make的方法都将涉及编写很多命令。因此,最好使用make命令
进行单位测试
$制作测试单位
执行组件测试
$制作测试组件
进行合同测试
$进行测试合同
进行集成测试
$进行测试融合
执行端到头(E2E)或系统或UI接受或功能测试
$制作test-e2e # 或者 $制作测试系统 # 或者 $使测试-UI接受 # 或者 $进行测试功能