|
@ -6,12 +6,37 @@
|
|
|
|
|
|
项目代码使用git管理,请安装git客户端并fork代码再下载修改。
|
|
|
|
|
|
## 开发环境安装
|
|
|
## 环境安装
|
|
|
|
|
|
- 开发工具: node.js的代码可以使用文本编辑器开发,如:Sublime, vi, vim等。也可以使用IDE开发,推荐使用WebStorm,包含大量便捷功能,加速开发。
|
|
|
- 数据库准备: IM服务器使用MySQL数据库,因此需要先安装MySQL数据库。然后执行resources/schema/im_schema.sql与resources/schema/talk_group_schema.sql脚本文件,创建数据模式。
|
|
|
第一个创建消息存储所需要的模式,第二个创建业务讨论组数据模式,并包含演示数据。
|
|
|
- 运行环境。node.js使用6.X版本开发,部署环境也需要使用相应的版本。
|
|
|
- 数据库准备: IM服务器使用MySQL数据库,因此需要先安装MySQL数据库。然后执行resources/schema/im_schema.sql与resources/schema/talk_group_schema.sql脚本文件,创建数据模式。第一个创建消息存储所需要的模式,第二个创建业务讨论组数据模式,并包含演示数据。
|
|
|
- 运行环境:node.js使用社区6.X版本或Joyent的0.10.x版本开发,部署环境也需要使用相应的版本。
|
|
|
|
|
|
## 运行
|
|
|
|
|
|
对Windows环境,可以预先安装node.js。对Linux环境,代码包中包含node.js程序,第一次部署需要使用chmod为此增加执行权限。通过以下命令启动消息服务器
|
|
|
|
|
|
node app.armour.js
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
测试框架使用mocha。REST客户端使用supertest。should模块提供断言测试。
|
|
|
|
|
|
## 部署
|
|
|
|
|
|
部署服务之前需要配置环境变量IM_PROFILE,Windows平台直接在系统中配置,Linux平台在profile中配置:
|
|
|
|
|
|
export IM_PROFILE=prod
|
|
|
|
|
|
IM_PROFILE值将决定应用加载的配置文件。值为prod, test, dev,仅能使用一个,若配置错误服务将无法运行。若未配置此参数则默认使用dev配置。
|
|
|
|
|
|
为保证服务正常运行,当服务异常退出时自动重启服务,IM服务器使用app.armour.js脚本,对进程添加保护:进程异常退出时,自动重启。为实现此目标,部署时通过appArmour启动服务即可实现进程的守护功能。
|
|
|
|
|
|
## 开发SDK
|
|
|
|
|
|
IM提供了开发SDK,一个JS脚本。客户端可以通过引用此脚本或将此脚本打包到资源中。此外,脚本使用jQuery作为基础环境,因此客户端需要预先引用jQuery脚本。客户端通过以下链接引用SDK文件
|
|
|
|
|
|
<script src='http://host:port/sdk/im.client.js'></script>
|
|
|
|
|
|
## 工程结构
|
|
|
|
|
@ -26,33 +51,35 @@ Node.js支持同步与异步调用,也导致了异常错误处理与众不同
|
|
|
|
|
|
实际上,使用throw并且期望调用者使用 try/catch 是很罕见的,因为 NodeJS里的同步函数通常不会产生运行失败(主要的例外是类似于JSON.parse的用户输入验证函数)。
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
测试框架使用mocha。REST客户端使用supertest, should模块。
|
|
|
## API
|
|
|
|
|
|
## 部署
|
|
|
本节将简要描述服务所提供的API,包括消息收发,运行状态及成员维护等。API分为两种:REST与WebSocket。
|
|
|
|
|
|
部署服务之前需要配置环境变量:IM_PROFILE,其值将决定应用加载的配置文件。值为prod, test, dev,仅能使用一个。
|
|
|
### REST API
|
|
|
|
|
|
为保证服务正常运行,当服务异常退出时自动重启服务,IM服务器使用appArmour脚本,对进程添加保护:进程异常退出时,自动重启。
|
|
|
为实现此目标,部署时通过appArmour启动服务即可实现进程的守护功能。
|
|
|
REST API遵循REST最佳实践,规范命名URL中的每个部分。注意POST请求是将数据作为请求体发送。下文中的host:port分别表示服务所在的主机地址及端口。
|
|
|
|
|
|
## 开发SDK
|
|
|
1 发送系统消息
|
|
|
|
|
|
IM提供了开发SDK,一个JS脚本。客户端可以通过引用此脚本或将此脚本打包到资源中。此外,脚本使用jQuery作为基础环境,因此客户端需要预先引用jQuery脚本。
|
|
|
客户端通过以下链接引用SDK文件
|
|
|
POST http://host:port/api/v1/chats/sm
|
|
|
|
|
|
参数格式
|
|
|
|
|
|
<script src='http://host:port/sdk/im.client.js'></script>
|
|
|
{
|
|
|
to: "Rose",
|
|
|
title: "System Message",
|
|
|
summary: "You have new job",
|
|
|
contentType: "1",
|
|
|
content: "The patient has been followed in the scheduler, please make new follow plan as soon as possible."
|
|
|
}
|
|
|
|
|
|
## API
|
|
|
|
|
|
### 发送系统消息
|
|
|
2 发送P2P消息
|
|
|
|
|
|
### 发送P2P消息
|
|
|
GET http://192.168.131.115:3000/api/v1/chats/pm
|
|
|
|
|
|
|
|
|
URL: http://192.168.131.115:3000/api/v1/chats/pm
|
|
|
请求方式:POST
|
|
|
参数格式:
|
|
|
参数格式
|
|
|
|
|
|
{
|
|
|
from: 发送人ID,
|
|
@ -61,11 +88,11 @@ URL: http://192.168.131.115:3000/api/v1/chats/pm
|
|
|
content: "消息内容"
|
|
|
}
|
|
|
|
|
|
### 发送群消息
|
|
|
3 发送群消息
|
|
|
|
|
|
POST http://192.168.131.115:3000/api/v1/chats/gm
|
|
|
|
|
|
URL: http://192.168.131.115:3000/api/v1/chats/gm
|
|
|
请求方式:POST
|
|
|
参数格式:
|
|
|
参数格式
|
|
|
|
|
|
{
|
|
|
from: 发送人ID,
|
|
@ -76,10 +103,10 @@ URL: http://192.168.131.115:3000/api/v1/chats/gm
|
|
|
content: "消息内容"
|
|
|
}
|
|
|
|
|
|
### 获取消息
|
|
|
4 获取消息
|
|
|
|
|
|
GET http://192.168.131.115:3000/api/v1/chats/pm?user_id=xxx
|
|
|
|
|
|
URL: http://192.168.131.115:3000/api/v1/chats/pm?user_id=xxx
|
|
|
请求试:GET
|
|
|
参数:
|
|
|
|
|
|
- user_id: 用户ID
|