历史版本15 :Websocket简介 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

FineReport10.0 ,当在一个机器上同时装了设计器与服务端工程,平台配置外接数据库后,会出现端口被占用问题,即 WebSocket 端口被占用。

当一台服务器上部署多个工程时,也会出现websocket端口冲突的问题,这时我们就需要手动修改websocket的端口,解决端口冲突问题。

注: WebSocket 是服务器给浏览器主动推送消息的一个端口,主要用于刷新token、用户被踢出、平台消息、内存和cpu显示、平台日志处当前系统在线人数、数据连接编辑状态的确定,不允许多人同时编辑。

目前怎么看websocket有没有连接成功?

  1. 直接看智能运维→内存管理的两张图片能不能出来,出来就表示连接成功了

  2. F12打开控制台,输入Dec.socket.connected,如果是true表示连接成功

  3. F12打开控制台,如果有关于38889之类socket端口的报错,且最后出现了connect error那就是没有连接成功。

2. 解决方案编辑

在配置数据中修改 WebSocket 端口( WebSocketConfig.port 和 WebSocketConfig.requestPort),提供给web服务器的端口范围应在1024~65535之间。

IDVALUE作用
WebSocketConfig.port单机使用,FineRepot默认值38888,FineBI默认值48888单机工程的websocket端口,未手动配置时使用默认值
WebSocketConfig.requestPort集群使用,FineRepot默认值38889,FineBI默认值48889集群工程的websocket转发端口,未手动配置时使用默认值

说明:

1)单机工程时,防火墙要开放WebSocketConfig.port的端口,集群工程时,防火墙要开放WebSocketConfig.requestPort的端口,并且要在负载均衡层面配置websocket的转发策略为粘滞,见负载均衡配置指导

2)如果是在同一台服务器上部署了多个工程,配置WebSocketConfig.port的值可以设置为数组[48886,48887,48888](具体端口根据实际情况确定,要部署几个节点就数组中就至少需要几个不重复的值),这样每个节点都会选择当前可用的端口,从而不会因为端口占用而导致服务器无法启动。

3. 操作示例编辑

我们以单机工程示例,找到报表服务器使用的配置数据库:

在表 fine_conf_entity 中添加 WebSocketConfig.port 和 WebSocketConfig.requestPort 两个字段,值修改为 40000

注:端口号的值不要使用远程端口39999

注:两个端口号值建议设置为不一样,设置不一样时 requestPort  为备用端口
222

 1)如果没有 迁移外置数据库,则在WEB-INF/embed/finedb下,那么参考 HSQL 数据库连接方式修改 HSQL 数据库中数据 来修改上面的字段;或者直接 使用 DBeaver 连接 FineDB 来修改上面的字段

2)如果迁移到外置数据库,那么可以直接使用 navicat 等数据库管理软件来修改上面的字段

4. 注意事项编辑

1)集群模式下修改websocket端口时,也参照上面的步骤进行修改,修改完毕后需要同步修改负载均衡的websocket配置。

2)如果忘记使用的是哪个外置数据库,可以在WEB_INF/config文件夹中的 db.properties 中查看数据库信息。

3)目前 2018.10.30 号之后的 JAR 在同一台设备中不可以同时启动设计器和 Tomcat,上述处理方法同样适用

4)使用设计器切换远程时:要保证设计器本地和服务器工程中的jar包一致,要不然也会出现切换远程工作目录卡死现象 

注:设计器 2018.11.6 及之后的JAR,10.0工程有两个端口,一个是容器的端口:默认为 8075,另一个是 WebSocket:默认为 38888。