为了降低 Websocket 配置难度,FineDataLink 工程支持容器 Websocket 方案。
该方案使用 Web 容器自带的 WebSocket 进行连接,端口复用 http 端口。用户无需对外开启端口,无需任何手动配置。
当工程支持容器 Websocket 方案时,前台访问会优先使用新方案,失败后使用老 socket.io 方案进行重试。
容器 Websocket 方案的执行,需要满足以下一些条件和配置。
容器 Websocket 方案,仅支持以下容器(容器环境一般是由用户自行准备,非 FineDataLink 自带)
支持Tomcat7.0.47~9.0 版本
需要修改web.xml名称空间,其他不变
<!--修改web-app如下--><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
wildly9+
eap6.4需要修改配置:
web-inf下新增jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?><!--Enable WebSockets --><jboss-web> <enable-websockets>true</enable-websockets></jboss-web>
修改${hboss_home}/standalone/configuration/standalone.xml
将protocol="HTTP/1.1"修改为protocol="org.apache.coyote.http11.Http11NioProtocol"
若当前工程所在容器环境满足条件,则「管理系统>系统管理>常规」页面不显示「WebSocket设置」。
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,需要删除以上内容。如下图所示:
无需额外配置,原ws配置保留/删除不影响容器化WebSocket方案生效。
容器化 WebSocket 方案支持 Chrome、FireFox、Edge、IE10 及以上版本浏览器。
容器化 WebSocket 方案不支持 IE9 及以下版本浏览器
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
Submitted successfully
Network busy