1. 概述
1.1 版本
FineDataLink 版本 |
---|
4.0 |
1.2 应用场景
为了降低 Websocket 配置难度,FineDataLink 工程支持容器 Websocket 方案。
该方案使用 Web 容器自带的 WebSocket 进行连接,端口复用 http 端口。用户无需对外开启端口,无需任何手动配置。
当工程支持容器 Websocket 方案时,前台访问会优先使用新方案,失败后使用老 socket.io 方案进行重试。
2. 方案执行步骤
容器 Websocket 方案的执行,需要满足以下一些条件和配置。
2.1 容器环境检验
容器 Websocket 方案,仅支持以下容器(容器环境一般是由用户自行准备,非 FineDataLink 自带)
容器 | 版本 | 说明 |
---|---|---|
Tomcat | 支持Tomcat7.0.47~9.0 版本 | - |
WebLogic | Weblogic12c及以上版本 | 需要修改web.xml名称空间,其他不变 <!--修改web-app如下--> |
WebSphere | WebSphere9及以上版本 | - |
JBoss | eap6.4+ wildly9+ | eap6.4需要修改配置: web-inf下新增jboss-web.xml <?xml version="1.0" encoding="UTF-8"?> 修改${hboss_home}/standalone/configuration/standalone.xml 将protocol="HTTP/1.1"修改为protocol="org.apache.coyote.http11.Http11NioProtocol" |
若当前工程所在容器环境满足条件,则「管理系统>系统管理>常规」页面不显示「WebSocket设置」。
2.2 负载均衡配置
2.2.1 Nginx
1)修改 http 配置
在每个 location 块下添加以下语句:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
2)需检查 Nginx 是否进行过 WebSocket 配置
打开 nginx.conf 文件,查看是否出现以下内容:
server {
#此处为websocket端口,如果是集群部署,FineReport工程为38889,FineBI工程为48889
listen 38889;
server_name 192.168.6.181;
location / {
proxy_http_version 1.1;
proxy_pass http://WBS.com;
proxy_connect_timeout 75;
proxy_read_timeout 400;
proxy_send_timeout 400;
#升级目标为$http_upgrade 值实际为websocket
proxy_set_header Upgrade $http_upgrade;
#Connection设置升级
proxy_set_header Connection "upgrade";
}
}
若未出现以上内容,即未在 Nginx 中配置过 WebSocket ,可直接使用容器化 WebSocket 方案。
若出现以上内容,即曾在 Nginx 中配置过 WebSocket,需要删除以上内容。如下图所示:
2.2.2 traefik
无需额外配置,原ws配置保留/删除不影响容器化WebSocket方案生效。
2.2.3 f5
无需额外配置,原ws配置保留/删除不影响容器化WebSocket方案生效。
2.3 浏览器环境
容器化 WebSocket 方案支持 Chrome、FireFox、Edge、IE10 及以上版本浏览器。
容器化 WebSocket 方案不支持 IE9 及以下版本浏览器