Skip to content

Контейнерное решение Websocket

1. Обзор

1.1 Версия

Версия сервера BI
5.1.20

1.2 Сценарии применения

Чтобы снизить сложность настройки Websocket, в BI-проекты 5.1.20 и более поздних версий добавлена новая контейнерная схема Websocket.

Для подключения решение использует WebSocket, поставляемый с веб-контейнером, а порт мультиплексирует порт http. Пользователям не нужно открывать порт извне и настраивать его вручную.

Если проект поддерживает контейнерную схему Websocket, доступ к фоновому режиму будет предпочтительно использовать новую схему, а в случае неудачи повторно использовать старую схему socket.io.

2. Этапы реализации программы

Для выполнения контейнерного Websocket-решения необходимо соблюсти некоторые из следующих условий и конфигураций.

2.1 Экологический контроль тары

Контейнерное Websocket-решение, поддерживаются только следующие контейнеры (контейнерное окружение обычно подготавливается пользователем, а не поставляется с FineBI)

контейнерывыпускаетинструкции
TomcatПоддержка Tomcat версий 7.0.47~9.0-
WebLogicWeblogic 12c и вышеНеобходимо изменить пространство имен web.xml, остальноеостается неизменным<! --- Измените веб-приложение следующим образом --> <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">
WebSphereWebSphere 9 и выше-
JBosseap6.4+ дико9+eap6.4 требует изменения конфигурации:В разделе web-inf добавьте jboss-web.xml<?xml version="1.0" encoding="UTF-8"? > <!--Включить 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 не отображаются на экране Manage system > System administration > General.

2.2 Конфигурация балансировки нагрузки

2.2.1 Nginx

1) Измените конфигурацию http

Добавьте следующие утверждения под каждым блоком расположения:

  
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; &   
  
 nbsp; имя_сервера 192.168.6.181; &   
 nbsp; location / {   
 proxy_http_version 1.1; proxy_pass http://  
  
 WBS.com; proxy_connect_timeout 75; &  
 nbsp; proxy_read_timeout 400; &  
 nbsp; proxy_send_timeout 400; &  
 nbsp; #Цель обновления для $http_upgrade Значение на самом деле является websocket proxy_set_header Upgrade $http_  
  
 upgrade; #Обновление настроек соединения &nbsp  
;proxy_set_header Connection "upgrade"; &nbsp  
; } }

Если вы не видите вышеуказанного, значит, вы не настроили WebSocket в Nginx и можете использовать контейнерное решение WebSocket напрямую.

Если появляется вышеуказанное содержимое, значит, вы настроили WebSocket в Nginx и вам нужно удалить вышеуказанное содержимое. Как показано на следующем рисунке:

2.2.2 traefik

Никакой дополнительной настройки не требуется, исходная конфигурация ws сохраняется/удаляется, не влияя на то, что решение WebSocket в контейнере вступит в силу.

2.2.3 f5

Никакой дополнительной настройки не требуется, исходная конфигурация ws сохраняется/удаляется, не влияя на то, что решение WebSocket в контейнере вступит в силу.

2.3 Браузерная среда

  • Контейнерное решение WebSocket поддерживает Chrome, FireFox, Edge, IE10 и выше.
  • Контейнерное решение WebSocket не поддерживает браузеры IE9 и ниже.