Skip to content

wildfirechat/open-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

野火开放平台

系统组成

野火开放平台系统包括3个部分,分别是IM系统、开放平台和应用。IM系统只是即时通讯的功能,在企业应用中需要对接大量的第三方办公类服务,比如考勤、打卡、文档、会议等,这些服务就是开放平台系统中的应用。需要一个服务来管理他们,方便他们的对接IM服务,这个服务就是开放平台。

开放平台包括3部分,open-server为后端服务;open-web为平台的管理平台的管理页面;open-work为客户端工作平台展示的页面。

在管理后台可以创建和管理应用。每个应用都拥有一个机器人账户和一个频道,使用野火机器人SDK、频道SDK和JS SDK就可以实现应用与IM服务的交互。

客户端的工作平台页面可以展示全局应用,可以收藏普通应用,可以点击应用来打开应用。还有一种是后台应用,在前台不展示应用,但应用还是可以使用频道和机器人接口来跟IM服务交互。

开放平台与应用是一对多的关系,理论上每个应用都要有个独立的服务,我们也提供了一个demo服务野火日报服务,可以直接基于demo开发新的应用,或者参考对接方式来对接现有应用。

系统架构图

架构图 图上红色部分为开放平台;绿色部分为应用,可能会有很多个应用,图上以应用1来举例;蓝色部分为IM系统。

开放平台

开放平台有后端应用和work页面组成,work页面运行在野火内置的浏览器中,内置浏览器支持JS Bridge,可以通过JS SDK来与IM SDK进行交互。

  • 接口1 Work页面调用开放平台接口来登录、获取全局应用列表和用户自己的收藏应用列表、及处理收藏/取消收藏等操作。
  • 接口2 Work页面通过JS SDK调用IM SDK来获取AuthCode,AuthCode用来登录开放平台使用。
  • 接口3 Work页面登录时带上AuthCode,开放平台后端收到后调用野火IM进行验证AuthCode,确认前端用户身份。

IM系统

应用页面和Work页面都会通过JS SDK来调用IM服务,最基础的调用就是获取AuthCode和config操作。

AuthCode是页面用来登录的令牌,应用页面和Work页面获取到AuthCode后去后台登录,后台再去IM服务验证用户身份,通过之后就确认了用户身份,从而完成了登录。

config是IM验证页面合法性的方法。页面去后台获取config签名,后台计算出config签名返回给页面,页面调用JS SDK的config方法,IM SDK收到签名后去IM服务验证,验证通过后,JS SDK就可以调用其它方法了。

应用

每个应用都是独立服务,互不影响。以App1举例,前端页面通过JS SDK与客户端的IM SDK进行交互,后端通过频道API或者机器人API来与IM服务进行交互。

流程图

工作页面的流程图

流程图

编译

项目是前后端分离的,但为了方便部署,默认打包是放到一起的。编译时请先编译open-work,然后编译open-web,最后编译open-server。默认前端页面编译后会拷贝到后端的resource目录,这样就可以前后端放到一起部署,也可以自行修改为前后端分离的方式部署。

启动

请参考open-server说明。

Nginx 反向代理与 IP 白名单

默认打包部署时,open-server API、open-web 管理后台和 open-work 工作页面都跑在同一个端口(8880)上。如果希望对管理后台做 IP 白名单控制,推荐在前面加一层 Nginx 反向代理,通过 allow/deny 限制访问来源。

1. 绑定后端到本地(可选但推荐)

open-server/config/application.properties 中把服务绑定到 127.0.0.1,避免外网直接访问 8880 端口:

server.address=127.0.0.1

2. Nginx 配置示例

以下配置仅允许 10.0.0.0/24192.168.1.100 访问管理后台(/),work 页面和 API 保持公开可访问:

server {
    listen 80;
    server_name open.example.com;

    # 管理后台:仅允许指定 IP
    location / {
        allow 10.0.0.0/24;
        allow 192.168.1.100;
        deny all;

        proxy_pass http://127.0.0.1:8880;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # work 页面:客户端工作平台,通常保持公开
    location /work.html {
        proxy_pass http://127.0.0.1:8880/work.html;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # API 接口:根据业务需要决定是否加白名单
    location /api/ {
        proxy_pass http://127.0.0.1:8880/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

3. 验证配置

修改 Nginx 配置后重载:

nginx -t
nginx -s reload

注意:如果 Nginx 和 open-server 之间还有 SLB、CDN 等代理,$remote_addr 会是代理的地址,此时应改用 $http_x_forwarded_for 做限制,或在最外层代理上设置真实 IP 模块。

截图

应用列表 应用列表

创建应用 创建应用

修改应用 修改应用

手机截图

About

野火开放平台

Resources

License

Stars

25 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors