|
@@ -1,23 +1,20 @@
|
|
|
# 服务器端口说明
|
|
|
-服务器使用了多个端口:1883用于tcp长链接,8083用于websocket长链接,80用于http连接。18080用于Server API使用。
|
|
|
->> 野火IM的SDK基于微信mars,使用长短结合的办法最优化服务的连接处理。关于长短连接的详细信息可以参考mars的官方文档。
|
|
|
+服务器使用了多个端口,大概分为2类,一类是对外端口,一类是对内端口。
|
|
|
|
|
|
-#### 长链接
|
|
|
-1883和8083都是长链接,运行野火IM的私有协议,野火IM的私有协议来源于对mqtt的二次开发。用于连接鉴权、发送消息、接收通知等。其中1883端口供移动和PC客户端使用,8083端口供Web和小程序端口使用。
|
|
|
+## 对外端口
|
|
|
+对外端口,顾名思义是对互联网开放的,使用者包括原生客户端、web/小程序客户端、机器人API和频道API。分别说明一下
|
|
|
|
|
|
-#### 短链接
|
|
|
-80是http短连接端口,客户端设置的端口,客户端会通过短连接端口获取到长连接端口。
|
|
|
+### 原生客户端
|
|
|
+野火原生客户端使用IM服务的80和1883端口,其中80端口是HTTP协议,1883端口是TCP协议。
|
|
|
|
|
|
-#### Server API
|
|
|
-18080是Server API的端口。server api用户创建用户,获取token,发送消息,撤回消息等一系列由其它服务操作的功能。
|
|
|
+### Web/小程序客户端
|
|
|
+Web/小程序客户端是基于JS的,使用IM服务的80和8083端口,其中80端口是HTTP协议,8083端口是WebSocket协议。建议上线添加SSL,使用HTTPS和WSS,可能的端口就变成了443和8083。
|
|
|
|
|
|
-#### 安全防护
|
|
|
-应用登录到应用服务器时,需要返回用户Token给IM SDK,该token为用户凭证,十分重要,需要应用使用https链接登录,并在本地安全存储。
|
|
|
+### 机器人API和频道API
|
|
|
+这两类都可以提供给其他第三方在公网使用,所以放到一起说,他们都使用IM服务的80端口。建议上线添加SSL,使用HTTPS,那么端口就可能是443。
|
|
|
|
|
|
-长链接和IM短链接,用户发送协议包,协议包经过AES加密,加密的密钥在token中。mars直接在tcp层上实现的http协议,对于系统来说就是普通的tcp连接。iOS的ATS可以不用加例外。密钥是一个会话一个密钥,可以有效的保护用户安全。
|
|
|
+## 对内端口
|
|
|
+对内端口也就是文档中常说的Server API。供内部其他业务服务调用,拥有最高权限,默认为18080。
|
|
|
|
|
|
-Server API是供应用服务进行调用的,接口有签名保护,建议和应用服务器放到同一内网中。
|
|
|
-
|
|
|
-另外媒体文件的上传是在mars中进行,无法使用https。使用云对象存储服务上传是http方式,有一定的安全隐患。使用野火私有对象存储会采用AES加密,安全有保证。
|
|
|
-
|
|
|
-综上,您需求确认您的媒体文件上传的安全性,如果要使用https,那就需要自己来上传。
|
|
|
+## 为什么机器人API和频道API使用80,而server api使用18080?
|
|
|
+因为server api权限非常大,只能内部使用。而机器人api和频道api权限有限,可以提供给第三方开发更多的业务,所以放开到公网使用,所以端口不一样。
|