1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-05-16 09:38:28 +02:00

Доработка документации

This commit is contained in:
Anton Titovets
2026-04-29 11:11:55 +03:00
parent d9644e8b7a
commit 572ab4308e
13 changed files with 313 additions and 308 deletions
-1
View File
@@ -712,7 +712,6 @@
|%2
|</div>
|</Admonition>
|<br/>
|"
, ?(ТекущийЯзык = "ru", "Предупреждение", "Caution")
, ?(ТекущийЯзык = "ru"
+52 -88
View File
@@ -12,127 +12,91 @@ import LibraryIntro from '@site/src/components/LibraryIntro';
<LibraryIntro module="OPI_WebSocket" cli="ws" use="oint/api/ws" lang="en"/>
This section is dedicated to the WebSocket protocol library for 1C:Enterprise, OneScript, and CLI. This page describes all the actions necessary for a complete start
This section covers the WebSocket library for 1C:Enterprise, OneScript, and CLI. It provides an overview of the main module capabilities and core usage principles.
## Getting Started
WebSocket is a protocol that provides full-duplex communication between a client and a server over a single TCP connection. The library supports both client mode (connecting to a WebSocket server) and server mode (accepting incoming connections).
WebSocket provides bidirectional communication over a single TCP connection. The library supports two operating modes:
### Operating Modes
- **Client** - connect to an external WebSocket server (`ws://` or `wss://`)
- **Server** - run your own WebSocket server and handle incoming connections
The library supports two main operating modes:
## Working in client mode
1. **Client** — connecting to an external WebSocket server
2. **Server** — creating your own WebSocket server to accept incoming connections
Client mode is used to connect to external WebSocket services and exchange messages. The main entry point is `CreateConnection`. After connecting, you can:
### Working in Client Mode
To connect to a WebSocket server, you need to:
1. Prepare the connection address (e.g., `wss://example.com:443/ws`)
2. Configure TLS if necessary using the `GetTlsSettings` function
3. Open the connection using the `CreateConnection` function
- send text and binary messages (`SendTextMessage`, `SendBinaryMessage`)
- receive incoming data (`GetMessage`)
- use service keepalive frames (`SendPing`, `SendPong`)
- close the session explicitly (`CloseConnection`)
```bsl
Address = "wss://example.com:443/ws";
Address = "wss://example.com:443/ws";
Connection = OPI_WebSocket.CreateConnection(Address);
// TLS configuration (for wss://)
TLSSettings = OPI_WebSocket.GetTlsSettings(False);
// Opening connection
Connection = OPI_WebSocket.CreateConnection(Address, TLSSettings);
// Sending text message
Result = OPI_WebSocket.SendTextMessage(Connection, "Hello, server!");
// Receiving response
OPI_WebSocket.SendTextMessage(Connection, "Hello, server!");
Response = OPI_WebSocket.GetMessage(Connection, 5000);
// Closing connection
OPI_WebSocket.CloseConnection(Connection);
```
### Working in Server Mode
### TLS
To create a WebSocket server, you need to:
1. Select a port to listen on
2. Configure logging using the `GetLoggingSettings` function (optional)
3. Start the server using the `StartServer` function
TLS is used for secure client connections (`wss://`). Build TLS settings with `GetTlsSettings` and pass them to `CreateConnection`. If TLS settings are not passed, the connection is opened without encryption.
```bsl
Port = 8080;
PoolSize = 100; // Maximum number of simultaneous connections
Address = "wss://example.com:443/ws";
TLSSettings = OPI_WebSocket.GetTlsSettings(False, "/path/to/certificate.pem");
// Logging configuration
Logging = OPI_WebSocket.GetLoggingSettings(True, 300);
// Starting server
Server = OPI_WebSocket.StartServer(Port, PoolSize, Logging);
// Receiving data from clients
Data = OPI_WebSocket.GetNextConnectionData(Server, 1000);
If Data["result"] Then
ConnectionID = Data["connection"];
Message = Data["data"];
// Sending response
OPI_WebSocket.SendData(Server, ConnectionID, "Server response");
EndIf;
// Stopping server
OPI_WebSocket.StopServer(Server);
```
### TLS Configuration
For secure connections (wss://), you need to configure TLS:
```bsl
// Trust all certificates (for testing)
TLSSettings = OPI_WebSocket.GetTlsSettings(True);
// Use a specific certificate
CertificatePath = "/path/to/certificate.pem";
TLSSettings = OPI_WebSocket.GetTlsSettings(False, CertificatePath);
Connection = OPI_WebSocket.CreateConnection(Address, TLSSettings);
```
:::important
TLS settings can only be set at the moment of connection creation
TLS settings are applied only when creating a connection (`CreateConnection`). You cannot change them for an already opened connection.
:::
### Logging
### Proxy
For debugging and monitoring server operation, you can enable logging:
The client supports proxy-based connections. Build proxy settings using `GetProxySettings` and pass them as the third parameter of `CreateConnection`. Supported proxy types: `socks5`, `socks4`, and `http`.
```bsl
// Logging to memory (last 300 events)
Logging = OPI_WebSocket.GetLoggingSettings(True, 300);
Address = "ws://example.com:80/ws";
ProxySettings = OPI_WebSocket.GetProxySettings("127.0.0.1", "8071", "socks5");
// Logging to file
Logging = OPI_WebSocket.GetLoggingSettings(True, 300, "/path/to/log.txt");
// Getting log
Log = OPI_WebSocket.GetLog(Server, True, 100);
Connection = OPI_WebSocket.CreateConnection(Address, Undefined, ProxySettings);
```
### Message Types
## Working in server mode
The library supports various message types:
Server mode is used to accept incoming WebSocket connections and exchange data with clients. It includes lifecycle and connection management methods:
- **Text** — sending via `SendTextMessage`
- **Binary** — sending via `SendBinaryMessage`
- **Ping/Pong** — service messages for connection checking
- start and stop server (`StartServer`, `StopServer`)
- read incoming data (`GetNextConnectionData`, `GetConnectionData`)
- send responses to a specific connection (`SendData`)
- list and close incoming connections (`GetConnectionList`, `CloseIncomingConnection`)
```bsl
// Sending text
OPI_WebSocket.SendTextMessage(Connection, "Text message");
Port = 8080;
PoolSize = 100;
Logging = OPI_WebSocket.GetLoggingSettings(True, 300);
// Sending binary data
BinaryData = GetBinaryDataFromFile("file.bin");
OPI_WebSocket.SendBinaryMessage(Connection, BinaryData);
Server = OPI_WebSocket.StartServer(Port, PoolSize, Logging);
Data = OPI_WebSocket.GetNextConnectionData(Server, 1000);
// Connection check
OPI_WebSocket.SendPing(Connection);
```
If Data["result"] Then
ConnectionID = Data["connectionId"];
Message = Data["message"];
OPI_WebSocket.SendData(Server, ConnectionID, "Server response");
EndIf;
OPI_WebSocket.StopServer(Server);
```
## Common capabilities
- `GetLoggingSettings` and `GetLog` provide diagnostics for both client and server
- `IsClientObject` and `IsServerObject` verify the type of returned component object
- For full parameters and edge cases, see **Client methods**, **Server methods**, and **Common**
+52 -88
View File
@@ -12,127 +12,91 @@ import LibraryIntro from '@site/src/components/LibraryIntro';
<LibraryIntro module="OPI_WebSocket" cli="ws" use="oint/api/ws" lang="ru"/>
Этот раздел посвящен библиотеке для работы с WebSocket протоколом в 1С:Предприятие, OneScript и CLI. На данной странице описаны все действия, необходимые для полноценного начала работы
Этот раздел посвящен библиотеке для работы с WebSocket в 1С:Предприятие, OneScript и CLI. На странице собраны ключевые возможности модуля и базовые принципы его использования.
## Начало работы
WebSocket — это протокол, обеспечивающий полнодуплексную связь между клиентом и сервером через единое TCP-соединение. Библиотека поддерживает работу как в режиме клиента (подключение к WebSocket серверу), так и в режиме сервера (прием входящих подключений).
WebSocket обеспечивает двусторонний обмен данными поверх одного TCP-соединения. В библиотеке доступны два режима работы:
### Режимы работы
- **Клиент** — подключение к внешнему WebSocket-серверу (`ws://` или `wss://`)
- **Сервер** — запуск собственного сервера и обработка входящих подключений
Библиотека поддерживает два основных режима работы:
## Работа в режиме клиента
1. **Клиент** подключение к внешнему WebSocket серверу
2. **Сервер** — создание собственного WebSocket сервера для приема входящих подключений
Клиентский режим предназначен для подключения к внешним WebSocket-сервисам и дальнейшего обмена сообщениями. Основная точка входа — `ОткрытьСоединение`. После подключения доступны:
### Работа в режиме клиента
Для подключения к WebSocket серверу необходимо:
1. Подготовить адрес подключения (например `wss://example.com:443/ws`)
2. При необходимости настроить TLS при помощи функции `ПолучитьНастройкиTls`
3. Открыть соединение при помощи функции `ОткрытьСоединение`
- отправка текстовых и двоичных сообщений (`ОтправитьТекстовоеСообщение`, `ОтправитьДвоичноеСообщение`)
- получение входящих данных (`ПолучитьСообщение`)
- служебные сообщения контроля соединения (`ОтправитьПинг`, `ОтправитьПонг`)
- корректное завершение сессии (`ЗакрытьСоединение`)
```bsl
Адрес = "wss://example.com:443/ws";
Адрес = "wss://example.com:443/ws";
Соединение = OPI_WebSocket.ОткрытьСоединение(Адрес);
// Настройка TLS (для wss://)
НастройкиTLS = OPI_WebSocket.ПолучитьНастройкиTls(Ложь);
// Открытие соединения
Соединение = OPI_WebSocket.ОткрытьСоединение(Адрес, НастройкиTLS);
// Отправка текстового сообщения
Результат = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, "Привет, сервер!");
// Получение ответа
OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, "Привет, сервер!");
Ответ = OPI_WebSocket.ПолучитьСообщение(Соединение, 5000);
// Закрытие соединения
OPI_WebSocket.ЗакрытьСоединение(Соединение);
```
### Работа в режиме сервера
### TLS
Для создания WebSocket сервера необходимо:
1. Выбрать порт для прослушивания
2. Настроить логирование при помощи функции `ПолучитьНастройкиЛогирования` (опционально)
3. Запустить сервер при помощи функции `ЗапуститьСервер`
TLS в WebSocket используется для защищенных клиентских подключений (`wss://`). Настройки формируются через `ПолучитьНастройкиTls` и передаются в `ОткрытьСоединение`. Если TLS-параметр не передан, соединение открывается без шифрования.
```bsl
Порт = 8080;
РазмерПула = 100; // Максимальное число одновременных соединений
Адрес = "wss://example.com:443/ws";
НастройкиTLS = OPI_WebSocket.ПолучитьНастройкиTls(Ложь, "/path/to/certificate.pem");
// Настройка логирования
Логирование = OPI_WebSocket.ПолучитьНастройкиЛогирования(Истина, 300);
// Запуск сервера
Сервер = OPI_WebSocket.ЗапуститьСервер(Порт, РазмерПула, Логирование);
// Получение данных от клиентов
Данные = OPI_WebSocket.ПолучитьДанныеОчередногоСоединения(Сервер, 1000);
Если Данные["result"] Тогда
IDСоединения = Данные["connection"];
Сообщение = Данные["data"];
// Отправка ответа
OPI_WebSocket.ОтправитьДанные(Сервер, IDСоединения, "Ответ сервера");
КонецЕсли;
// Остановка сервера
OPI_WebSocket.ОстановитьСервер(Сервер);
```
### Настройка TLS
Для безопасных соединений (wss://) необходимо настроить TLS:
```bsl
// Доверять всем сертификатам (для тестирования)
НастройкиTLS = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
// Использовать конкретный сертификат
ПутьКСертификату = "/path/to/certificate.pem";
НастройкиTLS = OPI_WebSocket.ПолучитьНастройкиTls(Ложь, ПутьКСертификату);
Соединение = OPI_WebSocket.ОткрытьСоединение(Адрес, НастройкиTLS);
```
:::important
Настройки TLS могут быть установлены только в момент создания соединения
Настройки TLS применяются только при создании соединения (`ОткрытьСоединение`). Изменить их для уже открытого соединения нельзя.
:::
### Логирование
### Прокси
Для отладки и мониторинга работы сервера можно включить логирование:
Клиент поддерживает подключение через прокси-сервер. Параметры прокси формируются функцией `ПолучитьНастройкиПрокси` и передаются в `ОткрытьСоединение` третьим параметром. Поддерживаются `socks5`, `socks4` и `http`.
```bsl
// Логирование в память (300 последних событий)
Логирование = OPI_WebSocket.ПолучитьНастройкиЛогирования(Истина, 300);
Адрес = "ws://example.com:80/ws";
НастройкиПрокси = OPI_WebSocket.ПолучитьНастройкиПрокси("127.0.0.1", "8071", "socks5", "user", "pass");
// Логирование в файл
Логирование = OPI_WebSocket.ПолучитьНастройкиЛогирования(Истина, 300, "/path/to/log.txt");
// Получение лога
Лог = OPI_WebSocket.ПолучитьЛог(Сервер, Истина, 100);
Соединение = OPI_WebSocket.ОткрытьСоединение(Адрес, Неопределено, НастройкиПрокси);
```
### Типы сообщений
## Работа в режиме сервера
Библиотека поддерживает различные типы сообщений:
Серверный режим позволяет принимать входящие WebSocket-подключения и обмениваться данными с клиентами. Для работы используются методы управления жизненным циклом сервера и соединений:
- **Текстовые** — отправка через `ОтправитьТекстовоеСообщение`
- **Двоичные** — отправка через `ОтправитьДвоичноеСообщение`
- **Ping/Pong** — служебные сообщения для проверки соединения
- запуск и остановка (`ЗапуститьСервер`, `ОстановитьСервер`)
- чтение данных (`ПолучитьДанныеОчередногоСоединения`, `ПолучитьДанныеСоединения`)
- отправка ответа в конкретное соединение (`ОтправитьДанные`)
- получение списка активных соединений и закрытие конкретного (`ПолучитьСписокСоединений`, `ЗакрытьВходящееСоединение`)
```bsl
// Отправка текста
OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, "Текстовое сообщение");
Порт = 8080;
РазмерПула = 100;
Логирование = OPI_WebSocket.ПолучитьНастройкиЛогирования(Истина, 300);
// Отправка двоичных данных
ДвоичныеДанные = ПолучитьДвоичныеДанныеИзФайла("file.bin");
OPI_WebSocket.ОтправитьДвоичноеСообщение(Соединение, ДвоичныеДанные);
Сервер = OPI_WebSocket.ЗапуститьСервер(Порт, РазмерПула, Логирование);
Данные = OPI_WebSocket.ПолучитьДанныеОчередногоСоединения(Сервер, 1000);
// Проверка соединения
OPI_WebSocket.ОтправитьПинг(Соединение);
```
Если Данные["result"] Тогда
IDСоединения = Данные["connectionId"];
Сообщение = Данные["message"];
OPI_WebSocket.ОтправитьДанные(Сервер, IDСоединения, "Ответ сервера");
КонецЕсли;
OPI_WebSocket.ОстановитьСервер(Сервер);
```
## Общие возможности
- `ПолучитьНастройкиЛогирования` и `ПолучитьЛог` позволяют включать и анализировать лог как для клиента, так и для сервера
- `ЭтоОбъектКлиента` и `ЭтоОбъектСервера` позволяют проверить тип возвращенного объекта
- Для детальных параметров каждого метода используйте страницы в разделах **Методы клиента**, **Методы сервера** и **Общие**
+1 -1
View File
@@ -21,7 +21,7 @@ import Admonition from '@theme/Admonition';
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| ЗаписьВПамять | - | Булево | &#x2716; | Запись лог в память для дальнейшего получения из объекта компоненты |
| ЗаписьВПамять | - | Булево | &#x2716; | Запись лога в память для дальнейшего получения из объекта компоненты |
| МаксимумСобытий | - | Число | &#x2716; | Максимальное число события, хранящееся в память |
| ПутьКФайлу | - | Строка | &#x2716; | Путь к файлу для сохранения полного лога, если необходимо |
+1 -1
View File
@@ -21,7 +21,7 @@ import Admonition from '@theme/Admonition';
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| ЗаписьВПамять | - | Булево | &#x2716; | Запись лог в память для дальнейшего получения из объекта компоненты |
| ЗаписьВПамять | - | Булево | &#x2716; | Запись лога в память для дальнейшего получения из объекта компоненты |
| МаксимумСобытий | - | Число | &#x2716; | Максимальное число события, хранящееся в память |
| ПутьКФайлу | - | Строка | &#x2716; | Путь к файлу для сохранения полного лога, если необходимо |
+1 -1
View File
@@ -11781,7 +11781,7 @@
"Проверяет, что значение является объектом внешней компоненты SQLite": "Checks that the value is an object of a SQLite AddIn",
"Совпадающие поля будут перезаписаны с приоритетом параметра функции": "Matching fields will be overwritten with the parameter of the function",
"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"СоздатьБазу": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"CreateDatabase",
"Запись лог в память для дальнейшего получения из объекта компоненты": "Logging log to memory for further retrieval from the addin object",
"Запись лога в память для дальнейшего получения из объекта компоненты": "Logging to memory for further retrieval from the addin object",
"Уровень информации: error, warn, info, debug, trace, fatal, unknown": "Information level: error, warn, info, debug, trace, fatal, unknown",
"В качестве ключевых выступают все UNIQUE и PRIMARY KEY поля таблицы": "All UNIQUE and PRIMARY KEY fields of the table serve as key fields",
"!OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, \"УдалитьБлок": "!OInt OPI_TestDataRetrieval.WriteLog(Result, \"DeleteBlock",
@@ -575,7 +575,7 @@
// Получает структуру настроек для запуска логирования при старте сервера
//
// Параметры:
// ЗаписьВПамять - Булево - Запись лог в память для дальнейшего получения из объекта компоненты - memory
// ЗаписьВПамять - Булево - Запись лога в память для дальнейшего получения из объекта компоненты - memory
// МаксимумСобытий - Число - Максимальное число события, хранящееся в память - count
// ПутьКФайлу - Строка - Путь к файлу для сохранения полного лога, если необходимо - path
//
@@ -57,7 +57,7 @@
// Получает структуру настроек для запуска логирования при старте сервера
//
// Параметры:
// ЗаписьВПамять - Булево - Запись лог в память для дальнейшего получения из объекта компоненты - memory
// ЗаписьВПамять - Булево - Запись лога в память для дальнейшего получения из объекта компоненты - memory
// МаксимумСобытий - Число - Максимальное число события, хранящееся в память - count
// ПутьКФайлу - Строка - Путь к файлу для сохранения полного лога, если необходимо - path
//
@@ -1375,6 +1375,16 @@
КонецФункции
Функция Проверка_Core_ПолучитьДоступныеНастройки(Знач Результат, Знач Вариант)
ОжидаетЧто(ТипЗнч(Результат) = Тип("Строка")).Равно(Истина);
ОжидаетЧто(ЗначениеЗаполнено(Результат)).Равно(Истина);
ОжидаетЧто(СтрНайти(Результат, "adv_response")).Больше(0);
Возврат Неопределено;
КонецФункции
Функция Проверка_Telegram_ПолучитьИнформациюБота(Знач Результат, Знач Вариант)
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
@@ -109,6 +109,7 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста);
РасширенныйВызов_ВызватьСНастройками(ПараметрыТеста);
РасширенныйВызов_ПолучитьДоступныеНастройки();
КонецПроцедуры
@@ -138,6 +139,14 @@
КонецПроцедуры
Процедура РасширенныйВызов_ПолучитьДоступныеНастройки()
Результат = OPI_РасширенныйВызов.ПолучитьДоступныеНастройки("OPI_Telegram", "ПолучитьИнформациюБота");
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Core", "ПолучитьДоступныеНастройки");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
+183 -124
View File
@@ -162,11 +162,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -179,12 +180,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -208,11 +215,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -225,12 +233,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -255,11 +269,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -272,12 +287,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -287,13 +308,16 @@
Результат = OPI_WebSocket.ОтправитьПинг(Соединение);
// Пропускаем все ответы от сервера до последнего
Пока Истина Цикл
ПоследнееСообщение = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
Если ПоследнееСообщение["result"] Тогда
// Очередное сообщение
Проверка = ПоследнееСообщение;
Иначе
// Сообщений больше нет
Прервать;
КонецЕсли;
@@ -323,11 +347,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -340,12 +365,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -374,11 +405,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -391,12 +423,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -406,11 +444,12 @@
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
// ECHO
// Отправляем сообщение ECHO-серверу
Отправка = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение);
OPI_ПолучениеДанныхТестов.Обработать(Отправка, "WebSocket", "ПолучитьСообщение", "Отправка, " + Постфикс); // SKIP
// Пропускаем все ответы от сервера до последнего
Пока Истина Цикл
ПоследнееСообщение = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000); // <----
@@ -444,11 +483,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -461,12 +501,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -475,9 +521,7 @@
Сообщение = "echo-text-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
Результат = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение);
Иначе
Результат = Соединение;
КонецЕсли;
@@ -513,11 +557,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -530,12 +575,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -607,11 +658,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -621,12 +673,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_WebSocket.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -659,11 +717,12 @@
Адрес = "wss://127.0.0.1:8443";
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции); // SKIP
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // SKIP
НастройкиПрокси = Неопределено; // SKIP
НуженПрокси = Истина;
НуженTLS = Истина;
НуженПрокси = ПараметрыФункции["Proxy"]; // SKIP
НуженTls = ПараметрыФункции["TLS"]; // SKIP
@@ -676,12 +735,18 @@
Если НуженПрокси Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
ПроксиАдрес = ПараметрыФункции["Proxy_IP"];
ПроксиПорт = ПараметрыФункции["Proxy_Port"];
ПроксиВид = ПараметрыФункции["Proxy_Type"];
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(ПроксиАдрес
, ПроксиПорт
, ПроксиВид
, ПроксиПользователь
, ПроксиПароль);
КонецЕсли;
@@ -703,7 +768,7 @@
Процедура WebSocket_ЗапуститьСервер(ПараметрыФункции)
Порт = 9886;
Порт = 9894;
РазмерПула = 10;
Результат = OPI_WebSocket.ЗапуститьСервер(Порт, РазмерПула);
@@ -718,41 +783,45 @@
Процедура WebSocket_ОстановитьСервер(ПараметрыФункции)
Порт = 9887;
Сервер = OPI_WebSocket.ЗапуститьСервер(Порт);
Порт = 9894;
ОбъектСервера = OPI_WebSocket.ЗапуститьСервер(Порт);
Результат = OPI_WebSocket.ОстановитьСервер(Сервер);
Результат = OPI_WebSocket.ОстановитьСервер(ОбъектСервера);
// END
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОстановитьСервер");
РезультатСписка = OPI_WebSocket.ПолучитьСписокСоединений(Сервер);
РезультатСписка = OPI_WebSocket.ПолучитьСписокСоединений(ОбъектСервера);
OPI_ПолучениеДанныхТестов.Обработать(РезультатСписка, "WebSocket", "ОстановитьСервер", "Список");
Адрес = "ws://127.0.0.1:9887";
Клиент = OPI_WebSocket.ОткрытьСоединение(Адрес);
Адрес = "ws://127.0.0.1:9894";
ОбъектКлиента = OPI_WebSocket.ОткрытьСоединение(Адрес);
OPI_ПолучениеДанныхТестов.Обработать(Клиент, "WebSocket", "ОстановитьСервер", "Подключение");
OPI_ПолучениеДанныхТестов.Обработать(ОбъектКлиента, "WebSocket", "ОстановитьСервер", "Подключение");
КонецПроцедуры
Процедура WebSocket_ПолучитьДанныеОчередногоСоединения(ПараметрыФункции)
ПортЗапуска = 9888;
// Запуск сервера
ПортЗапуска = 9894;
ОбъектСервера = OPI_WebSocket.ЗапуститьСервер(ПортЗапуска);
АдресПодключения = "ws://127.0.0.1:9888";
// Подключение к серверу при помощи клиента
АдресПодключения = "ws://127.0.0.1:9894";
ОбъектКлиента = OPI_WebSocket.ОткрытьСоединение(АдресПодключения);
Если Не OPI_WebSocket.ЭтоОбъектКлиента(ОбъектКлиента) Тогда
ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента);
Иначе
// Отправка с клиента
Сообщение = "Hello from client!";
Отправка = OPI_WebSocket.ОтправитьТекстовоеСообщение(ОбъектКлиента, Сообщение);
КонецЕсли;
// Получение на сервере
Результат = OPI_WebSocket.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000);
// END
@@ -774,10 +843,12 @@
Процедура WebSocket_ПолучитьДанныеСоединения(ПараметрыФункции)
ПортЗапуска = 9889;
// Запуск сервера
ПортЗапуска = 9894;
ОбъектСервера = OPI_WebSocket.ЗапуститьСервер(ПортЗапуска);
АдресПодключения = "ws://127.0.0.1:9889";
// Подключение к серверу при помощи клиента
АдресПодключения = "ws://127.0.0.1:9894";
ОбъектКлиента = OPI_WebSocket.ОткрытьСоединение(АдресПодключения);
Если Не OPI_WebSocket.ЭтоОбъектКлиента(ОбъектКлиента) Тогда
@@ -786,6 +857,7 @@
OPI_Инструменты.Пауза(1); // SKIP
// Получение списка активных соединений на сервере
СписокСоединений = OPI_WebSocket.ПолучитьСписокСоединений(ОбъектСервера);
Если Не СписокСоединений["result"] Тогда
@@ -800,9 +872,11 @@
Для Н = 0 По 5 Цикл
// Отправка ссообщения с клиента
ТекущееСообщение = СтрШаблон("Message no. %1", Н);
OPI_WebSocket.ОтправитьТекстовоеСообщение(ОбъектКлиента, ТекущееСообщение);
// Получение входящего сообщения на сервере по ID
Результат = OPI_WebSocket.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000);
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьДанныеСоединения", , ТекущееСообщение); // SKIP
@@ -829,20 +903,23 @@
Процедура WebSocket_ОтправитьДанные(ПараметрыФункции)
ПортЗапуска = 9890;
// Запуск сервера
ПортЗапуска = 9894;
ОбъектСервера = OPI_WebSocket.ЗапуститьСервер(ПортЗапуска);
АдресПодключения = "ws://127.0.0.1:9890";
// Подключение к серверу при помощи клиента
АдресПодключения = "ws://127.0.0.1:9894";
ОбъектКлиента = OPI_WebSocket.ОткрытьСоединение(АдресПодключения);
Если Не OPI_WebSocket.ЭтоОбъектКлиента(ОбъектКлиента) Тогда
ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента);
КонецЕсли;
// Отправка ссообщения с клиента
Сообщение = "Hello!";
OPI_WebSocket.ОтправитьТекстовоеСообщение(ОбъектКлиента, Сообщение);
// Получение очередного соединения на сервере и возврат ответа
ОчередноеСообщение = OPI_WebSocket.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000);
IDСоединения = ОчередноеСообщение["connectionId"];
@@ -864,20 +941,23 @@
Процедура WebSocket_ЗакрытьВходящееСоединение(ПараметрыФункции)
ПортЗапуска = 9891;
// Запуск сервера
ПортЗапуска = 9894;
ОбъектСервера = OPI_WebSocket.ЗапуститьСервер(ПортЗапуска);
АдресПодключения = "ws://127.0.0.1:9891";
// Подключение к серверу при помощи клиента
АдресПодключения = "ws://127.0.0.1:9894";
ОбъектКлиента = OPI_WebSocket.ОткрытьСоединение(АдресПодключения);
Если Не OPI_WebSocket.ЭтоОбъектКлиента(ОбъектКлиента) Тогда
ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента);
КонецЕсли;
// Отправка ссообщения с клиента
Сообщение = "Hello!";
OPI_WebSocket.ОтправитьТекстовоеСообщение(ОбъектКлиента, Сообщение);
// Получение и закрытие соединения на сервере
ПервоеСообщение = OPI_WebSocket.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000);
IDСоединения = ПервоеСообщение["connectionId"];
@@ -902,10 +982,12 @@
Процедура WebSocket_ПолучитьСписокСоединений(ПараметрыФункции)
ПортЗапуска = 9892;
// Запуск сервера
ПортЗапуска = 9894;
ОбъектСервера = OPI_WebSocket.ЗапуститьСервер(ПортЗапуска);
АдресПодключения = "ws://127.0.0.1:9892";
// Создание нескольких соединений клиента
АдресПодключения = "ws://127.0.0.1:9894";
Клиент1 = OPI_WebSocket.ОткрытьСоединение(АдресПодключения);
Клиент2 = OPI_WebSocket.ОткрытьСоединение(АдресПодключения);
@@ -918,6 +1000,7 @@
ВызватьИсключение OPI_Инструменты.JSONСтрокой(Клиент2);
КонецЕсли;
// Получение списка активных соединений на сервере
Результат = OPI_WebSocket.ПолучитьСписокСоединений(ОбъектСервера);
// END
@@ -945,7 +1028,7 @@
Процедура WebSocket_ЭтоОбъектСервера(ПараметрыФункции)
Порт = 9893;
Порт = 9894;
Сервер = OPI_WebSocket.ЗапуститьСервер(Порт);
Результат = OPI_WebSocket.ЭтоОбъектСервера(Сервер);
@@ -964,11 +1047,13 @@
Процедура WebSocket_ПолучитьЛог(ПараметрыФункции)
// Запуск сервера
ПортЗапуска = 9894;
ФайлЛога = ПолучитьИмяВременногоФайла("txt");
НастройкиЛогирования = OPI_WebSocket.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога);
ОбъектСервера = OPI_WebSocket.ЗапуститьСервер(ПортЗапуска, , НастройкиЛогирования);
// Подключение к серверу с клиента
АдресПодключения = "ws://127.0.0.1:9894";
ОбъектКлиента = OPI_WebSocket.ОткрытьСоединение(АдресПодключения);
OPI_Инструменты.Пауза(1); // SKIP
@@ -977,6 +1062,7 @@
ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента);
КонецЕсли;
// Получение лога сервера
Результат = OPI_WebSocket.ПолучитьЛог(ОбъектСервера);
// END
@@ -1015,33 +1101,6 @@
#Область ВспомогательныеФункции
Функция СоздатьКлиентWebSocket(ПараметрыФункции)
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции);
НастройкиTls = Неопределено;
НастройкиПрокси = Неопределено;
Заголовки = Новый Соответствие;
Заголовки.Вставить("X-Trace-Id", "OPI-WS-TEST");
Если ПараметрыФункции["TLS"] Тогда
НастройкиTls = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Если ПараметрыФункции["Proxy"] Тогда
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
ПараметрыФункции["Proxy_IP"],
ПараметрыФункции["Proxy_Port"],
ПараметрыФункции["Proxy_Type"],
ПараметрыФункции["Proxy_User"],
ПараметрыФункции["Proxy_Password"]);
КонецЕсли;
Возврат OPI_WebSocket.ОткрытьСоединение(Адрес, НастройкиTls, НастройкиПрокси, Заголовки);
КонецФункции
Функция ПолучитьАдресWebSocket(ПараметрыФункции)
Схема = ?(ПараметрыФункции["TLS"], "wss://", "ws://");
+1 -1
View File
@@ -575,7 +575,7 @@
// Получает структуру настроек для запуска логирования при старте сервера
//
// Параметры:
// ЗаписьВПамять - Булево - Запись лог в память для дальнейшего получения из объекта компоненты - memory
// ЗаписьВПамять - Булево - Запись лога в память для дальнейшего получения из объекта компоненты - memory
// МаксимумСобытий - Число - Максимальное число события, хранящееся в память - count
// ПутьКФайлу - Строка - Путь к файлу для сохранения полного лога, если необходимо - path
//
+1 -1
View File
@@ -57,7 +57,7 @@
// Получает структуру настроек для запуска логирования при старте сервера
//
// Параметры:
// ЗаписьВПамять - Булево - Запись лог в память для дальнейшего получения из объекта компоненты - memory
// ЗаписьВПамять - Булево - Запись лога в память для дальнейшего получения из объекта компоненты - memory
// МаксимумСобытий - Число - Максимальное число события, хранящееся в память - count
// ПутьКФайлу - Строка - Путь к файлу для сохранения полного лога, если необходимо - path
//