Бажано з UserConnection :) 

Куди копати? 



.net core

Нравится

3 комментария

Доброго дня! 

 

Чи правильно я розумію, що ви, фактично, хочете під'єднатися до Creatio зі стороннього додатку?

 

​​​​​​​Дякую! 

Так і саме через вебсокети, по ресті через сервіси і так можна це зрозуміло.

Roman Brown,

якщо э постійні взаємодії користувача з сервером, хотілось би не робити 100 запросів різних :)

Показать все комментарии

Добрый день.

После обновления до 7.18.5 на среде on-site перестали открываться карточки редактирования по БП, открываются только через CTI панель. В статье https://academy.terrasoft.ua/docs/user/razvertyvanie_onsite/windows_net_framework/nastroika_vebsoketov/nastroit_vebsokety указанны 3 способа проверки корректной настройки WebSocket-тов. 2 из них у меня проходят успешно, а 3-й как раз открытие карточек из БП. Все рекомендации из статьи выполнил.

Возможно есть еще настройки на которые надо обратить внимание?

Спасибо.

Нравится

1 комментарий

Добрый день.

Для корректной работы Websockets нужно проверить:

1)Убедиться что в Windows установлен компонент: Application Development - WebSocket Protocol

2) Во всех байндингах сайта должен быть указан один и тот же порт.

3) Настройка пула [Maximum Worker Process] должна иметь значение "1"

4) В Web.config загрузчика и приложения, на всех нодах фермы, должен быть указан один и тот-же machineKey

5) TenantId не должны дублироваться с разными значениями, как в одном и том-же web.config, так и web.config загрузчика и приложения одной ноды.

6)Установлен ли протокол использования вебсокетов для прокси-сервера, если он используется в вашей локальной сети.

7) Настройки антивируса и Firewall. Если нет возможности отключить на сервере эти программы, добавьте IP-адрес и порт вашего сайта Creatio в список исключений для входящих и исходящих потоков.

8) Наличие расширений и надстроек web-браузера, в том числе VPN. Расширения могут блокировать работу вебсокетов.



Если websocket-ы работают корректно, а страница редактирования не открывается, то нужно проверить параметр "portForClientConnection" в web.config.

Укажите в нем порт на котором работает приложение.

Показать все комментарии

Здравствуйте!



Друзья, подскажите пожалуйста, можно ли включить кластерный режим планировщика в версии 7.2.2.707. У нас настроено горизонтальное масштабирование, но не работают веб сокеты если больше одной ноды. Есть документация по новым версиям: https://academy.terrasoft.ua/docs/user/razvertyvanie_onsite/nastroika_d…

Есть ли что-то подобное для нашей версии?

 

Нравится

2 комментария

Олег, здравствуйте.

В этой версии ещё нет полноценной поддержки веб-сокетов в ферме. Реализация этого функционала доступна в версии 7.12.1 и выше.

 

Что касается кластеризации планировщика, по умолчанию он и так должен быть включён, за это отвечает параметр \web.config:

 

<add key="quartz.jobStore.clustered" value="true" />

 

Но, чтобы это работало, нужно ещё исправить ключ:

<add key="quartz.scheduler.instanceId" value="auto" />

 

(написать в верхнем регистре)

<add key="quartz.scheduler.instanceId" value="AUTO" />

Спасибо, Олег.

Показать все комментарии

Проблема в том что не могу отследить событие добавление файла на деталь "Файлы и ссылки".

"KtFilesConfirmingDiscountDetail": {
	"schemaName": "KtFilesConfirmingDiscountDetail",
	"entitySchemaName": "KtFilesConfirmingDiscount",
	"filter": {
		"detailColumn": "KtOpportunityProductInterest",
		"masterColumn": "Id"
	},
	"subscriber": {
		"methodName": "discountValueEnable"
	}
}

Данная конструкция отслеживает удаление файла а так же изменение записи (описание внутри, можно сказать редактирование), но добавление файла не как не отправляет сообщение. Смотрел логику работы, так и не нашел что бы отправлялось сообщение что "добавлен файл"

Нравится

3 комментария

Александр, в стандартной системе нет объекта KtFilesConfirmingDiscount и схемы детали KtFilesConfirmingDiscountDetail, не видя её кода сложно сказать, почему оно так реализовано. Если это часть партнёрского дополнения, лучше будет уточнить у его автора.

 

Если нужно разработать свою логику со срабатыванием на добавление, можно в обычном БП или встроенном БП объекта файла в этом разделе завязаться на событие добавления.

 

Например, в CaseFile есть такая логика:

Зверев Александр,

 

Код детали

define("KtFilesConfirmingDiscountDetail", ["css!KtFilesConfirmingDiscountDetailCssModule"],
	function() {
	return {
		methods: {
			/**
			 * Initializes parent entity.
			 */
			initParentEntity: function() {
				this.parentEntity = {};
				const entitySchemaName = this.entitySchema &amp;&amp; this.entitySchema.name || "";
				const parentSchemaName = entitySchemaName.replace("KtFilesConfirmingDiscount", "KtOpportunityProductInterest");
				const masterRecordId = this.get("MasterRecordId");
				this.parentEntity.EntityName = parentSchemaName;
				this.parentEntity.RecordId = masterRecordId;
			},
			/**
			 * ############## ####### "drag" # "drop" ##########.
			 * @private
			 */
			initDropzoneEvents: function() {
				const dropZone = document.getElementById("DragAndDropContainerOpportunityProductInterest");
				if (!dropZone) {
					return;
				}
				if (this.Terrasoft.Features.getIsEnabled("CheckMasterRecordEditRights") &amp;&amp;
						!this.get("CanEditMasterRecord")) {
					return;
				}
				this.Terrasoft.ConfigurationFileApi.initDropzoneEvents(dropZone, function(over) {
					if (over) {
						dropZone.classList.add("dropzone-hover");
					} else {
						dropZone.classList.remove("dropzone-hover");
					}
				}, function(files) {
					this.onFileSelect(files);
				}.bind(this));
			},
			getAddRecordButtonVisible: function() {
				return this.getToolsVisible() &amp;&amp; this.get("CanEditMasterRecord") &amp;&amp; this.get("IsEnabled");
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "DragAndDrop Container",
				"parentName": "Detail",
				"propertyName": "items",
				"values": {
					"id": "DragAndDropContainerOpportunityProductInterest",
					"selectors": {"wrapEl": "#DragAndDropContainerOpportunityProductInterest"},
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"wrapClass": ["dropzone"],
					"items": [
						{
							"labelClass": ["DragAndDropLabel"],
							"itemType": Terrasoft.ViewItemType.LABEL,
							"caption": {"bindTo": "Resources.Strings.DragAndDropCaption"}
						}
					]
				}
			}
		]
		/**SCHEMA_DIFF*/
	};
});

Родительский объект "FileDetailV2 ( UIv2 )". Думаю CSS нет смысла прикладывать, он стандартный.

Событие на добавление нужно отловить на клиентской части, нужно по этому событию сделать поле на странице редактируемым (снять блок, эта логика уже есть)

По рекомендации поддержки просмотрел методы сохранения и решил остановится на onFileComplete

 

на стороне детали:

messages: {
	"DiscountValueEnable": {
		"mode": Terrasoft.MessageMode.PTP,
		"direction": Terrasoft.MessageDirectionType.PUBLISH
	}
},
onFileComplete: function() {
	this.callParent(arguments);
	this.sandbox.publish("DiscountValueEnable", null, [this.sandbox.id]);
}

на стороне страницы:

messages: {
	"DiscountValueEnable": {
		mode: this.Terrasoft.MessageMode.PTP,
		direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
	}
},
methods: {
	init: function() {
		this.callParent(arguments);
		this.sandbox.subscribe("DiscountValueEnable", function() {
				this.discountValueEnable();
			}, this, [this.sandbox.id + "_detail_KtFilesConfirmingDiscountDetailKtFilesConfirmingDiscount"]);
	},
	discountValueEnable: function(){
		this.set("discountValueEnable", true);
	}
}

 

Показать все комментарии

Добрый день.

Может сталкивался кто с таким, что необходимо из под одного пользователя послать socket сообщение другому именно из клиента без использования сервисов или бизнес-процессов?

А то я уткнулся в то что ping-pong могу проверить и всё.

При попытке слать другие сообщения, даже тот пользователь что их шлёт, ответ не получает и ни в один обработчик таких действий точкой останова не удается попасть.

Нравится

6 комментариев

Михаил, 

С механизмом передачи сообщений по WebSocket можно ознакомится тут: https://academy.terrasoft.ru/documents/technic-sdk/7-12/mehanizm-peredachi-soobshcheniy-po-websocket-clientmessagebridge

Сам механизм WebSocket'ов подразумевает наличие клиента и сервера:  https://developer.mozilla.org/ru/docs/WebSockets

У запущенного в IIS приложении однозначно есть сервер. Статья из MDN ровным счётом ничего не объясняет касаемо BPM, попытки принять сообщение на клиенте не увенчались успехом. Сообщение уходило отлично, но в ответ как бы я не пытался сделать обработчик он ни разу не срабатывал. В статье на Академии описан механизм отправки сообщения именно из c#, к сожалению такой подход не устраивает мои интересы. Хотелось бы понять, существует ли возможность отправить и принять сообщение именно средствами js?

Кисловский Михаил Андреевич,

Возможно не совсем правильно поняла изначально Ваш вопрос.

На клиенте сокет можно создать следующим образом: 

var socket =&nbsp;new WebSocket(&lt;"ws://адрес сервера : порт&gt;);

 

Tsopa,

 

Да с этим не было проблем, пытался даже так

var socket = new Terrasoft.WebSocketChannel({serviceUrl:"ws://..."})

undefined

socket.postMessage({Id: Terrasoft.generateGUID(),

    Header: {

        Sender: "CustomSender",

        BodyTypeName: null

    },

    Body: "Hello BPM"

})

Но безуспешно.

лепим объект d и высылаем его Broadcast:

Приходит ответ от сервера, декодится Body, отсылается BroadCast сообщение в конфигурацию.

Ну и я так понимаю можно в любом месте подписаться на сообщение: на нужной странице/сделать модуль, который будет грузиться изначально при заходе пользователя(аналог териковских listener-ов)/втупую подписаться в CTI панели(она всегда грузится + что важно, не скрывается при работе пользователя в системе).

Осталось в body кидать id юзера/контакта и как-то фильтровать.

мммда...

Хм, как то подозрительно. Я broadcast'ом в рамках одной сессии только сообщения получал. Не удалось довести сообщение до пользователя Х, от пользователя У.

Показать все комментарии

Коллеги, добрый день! Выполняли настройку вебсокетов по мануалу https://academy.terrasoft.ru/documents/service-enterprise/7-9/nastroyka-...
Все, что нужно, во всех конфигах указали, но после их сохранения и перезапуска IIS все равно появляется оповещение, что вебсокеты настроены некорректно. В чем может быть причина?
P.S. Указывали пользовательский порт для подключения "0" как в документации, и 443, т. к. сайт работает на https

Нравится

5 комментариев

Здравствуйте!

При работе по защищенному протоколу (https) для работы веб-сокетов по 443 порту необходимо в веб-конфиге указать следующие параметры:

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService,Terrasoft.Messaging.MicrosoftWSService" encrypted="false" portForClientConnection="0" maxConnectionNumber="100" clearIdleSession="false" clearIdleSessionInterval="120" />

Дополнительно убедитесь, что не происходит блокировки на уровне брандмауэра Windows. Если он включен, то должны быть созданы правила для входящего и исходящего подключения.

Илья, спасибо. Вопрос решен!

Илья, еще раз здравствуйте! Настраивала вебсокеты в соответствии с документацией и вашими рекомендациями для двух приложений. На одном, как я выше писала, вопрос решился. Для 2го все настраивала по аналогии, но все равно вебсокеты настроены некорректно. В чем еще может быть проблема?

Добрый день, Елена.

В случае если приложения развернуты на одном сервере и если для двух сайтов во флаге portForClientConnection указан один и тот же порт, рекомендуем указать разные. Проверьте доступность портов.

Также, на работу Websockets может влиять наличие антивируса, который блокирует подключение (необходимо включить адрес bpm'online в список надежных, либо отключить антивирус), Firewall на сервере приложения блокирует подключение (необходимо создать два исключения - для входящего потока и для исходящего потока для порта, по которому происходит подключение), наличием расширений браузера Chrome (необходимо отключить расширения, которы блокируют работу).

Правила создала, но это тоже не помогло. Все оказалось прозаичнее: не были включены компоненты для протокола вебсокетов для диспетчера IIS

Показать все комментарии

Ребята, вы сами читаете инструкции, которые пишете?

Как нормальному человеку разобраться вот в этом. Читаем в инструкции:

Первый тип установки (Microsoft WebSockets) будет работать только для приложений работающих под IIS 8 в ОС Windows Server 2012 и Windows 8, при этом настройка портов не требуется
..\Terrasoft.WebApp\Web.config

Ок. Пока - все понятно. Но, дальше мы видим заголовок:

Настройка Web.config и Terrasoft.WebApp\Web.config

Тааак. Мы же только что настроили Terrasoft.WebApp\Web.config Ок, наверное, просто повторили. Бывает.

Но, что это?!!


...

   
     ...
     
         
        ...
       
...

    ...
   
      ...
     

Мы видим совсем другой фрагмент конфига! Во-первых, он гораздо больше предыдущей версии. Но, это еще можно белыми нитками пришить. А, во-вторых, номер порта уже совсем другой!!! Все, приехали - какой из вариантов правильный?

Как в этом разобраться?

Нравится

30 комментариев

Добрый день!

"bayborodin" написал:

Но, что это?!!

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService, Terrasoft.Messaging.MicrosoftWSService" encrypted="false" portForClientConnection="2011" />

...

<location path="." inheritInChildApplications="false">

    <system.web>

     ...

      <httpRuntime maxRequestLength="102400" executionTimeout="28800" targetFramework="4.5" />

          <httpHandlers>

        ...

        <add verb="GET" path="*ViewModule.aspx.ashx" type="Terrasoft.Messaging.MicrosoftWSService.WSHandler, Terrasoft.Messaging.MicrosoftWSService" />

...

<system.webServer>

    ...

    <handlers>

      ...

      <add name="WSHandler" verb="*" path="*ViewModule.aspx.ashx" type="Terrasoft.Messaging.MicrosoftWSService.WSHandler, Terrasoft.Messaging.MicrosoftWSService" />

Мы видим совсем другой фрагмент конфига! Во-первых, он гораздо больше предыдущей версии. Но, это еще можно белыми нитками пришить. А, во-вторых, номер порта уже совсем другой!!! Все, приехали - какой из вариантов правильный?


Это выборка параметров web.config, которые нужны для функционирования Microsoft WebSockets.
Порт можно указать какой угодно, главное, чтобы он был доступен для подключения.

Замечательно! Из контекста это понятно? Об этом прямо где-то сказано? В одном месте инструкции у вас один порт, в другом - совсем другой. И - ни слова об этом?
Браво! Качество документации соответствует качеству продукта!

"bayborodin" написал:Качество документации соответствует качеству продукта

1) это не документация
2) веб-сокет не продукт Террасофт

bayborodin, не совсем понял, какое отношение качество моей инструкции имеет к качеству продукта bpm'online)
Замечания я принимаю, в дальнейшем применю, спасибо.

Ровно эту же инструкцию мне выслала техподдержка Террасофта. Значит - имеет отношение.
Настраиваются веб-сокеты - да, не ваш продукт. Но, настраиваются не глобальные настройки, а настройки веб-сайта BPM, и это - уже ваша зона ответстенности, а не Microsoft.

"bayborodin" написал:ваша зона ответстенности

(я не Террасофт)
это как раз ваша зона ответственности раз у вас on-site) Террасофт вам может только "помочь советом"
инструкция не понятная, но ваша реакция еще менее понятна

Здравствуйте, bayborodin.
Как вариант, номер порта можно указать тот, на котором "висит" сайт.

Коллеги подскажите в какое место надо добавить

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService, Terrasoft.Messaging.MicrosoftWSService" defaultPort="0" encrypted="false" portForClientConnection="44310" />

в файле \Terrasoft.WebApp\Web.config

?

Спасибо.

Здравствуйте, Марат!

Выполните поиск по файлу с текстом "wsService type".

У меня нет такого "wsService type" в файле \Terrasoft.WebApp\Web.config я поэтому и удивляюсь.

"Юсупов Марат" написал:

У меня нет такого "wsService type" в файле \Terrasoft.WebApp\Web.config я поэтому и удивляюсь.


А в итоге все таки нашли? я просто сейчас тоже ищу кудаж эту строчку вставить...

https://academy.terrasoft.ru/documents/sales-enterprise/7-10/nastroyka-…

По сути изменения нужжно вносить только в web.config приложения. Изменения, вносимые в web.config загрузчика незначительные.

Что-то мне это напоминает :)

Я как-то было дело, тоже "лютовал", но правда прямо в саппорт :)

Действительно надо бы инструкцию поправить, ну и вообще переработать,
Предлагаю открыть тут на сообществе тему, составить ее общими усилиями, а финальный вариант, коллеги из службы поддержки заберут на "Академию".

"Севостьянов Илья Сергеевич" написал:

Что-то мне это напоминает :)



Я как-то было дело, тоже "лютовал", но правда прямо в саппорт :)

Действительно надо бы инструкцию поправить, ну и вообще переработать,

Предлагаю открыть тут на сообществе тему, составить ее общими усилиями, а финальный вариант, коллеги из службы поддержки заберут на "Академию".


Найс:)
Идея хорошая, но пока я что-то все равно не смог сделать так, чтобы сокеты система признала корректными...
Можете подсказать как вы решили данный вопрос?

Итак все решено:
в файл Web.config в папке Terrasoft.WebApp необходимо было строку

<wsService type="Terrasoft.Messaging.SuperWSService.SuperWSService, Terrasoft.Messaging.SuperWSService" defaultPort="2011" encrypted="false" portForClientConnection="44310" maxConnectionNumber="100" clearIdleSession="false" clearIdleSessionInterval="120" />

заменить на строку

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService,
Terrasoft.Messaging.MicrosoftWSService" encrypted="false" portForClientConnection="0" />

справедливости ради, отмечу, что у нас не возникало проблем с настройкой WenSocket'ов (не считая косяка с портом 2011 для MicrosoftWSService)

Вообщем суть такая что изначально (из дистрибутива) в конфигах прописывается настройка для SuperWebsoket, а соответственно и директивы Terrasoft.Messaging.SuperWSService.SuperWSService
Ежели мы хотим юзать Websoketsиз Application dev-kit порставки Windows Server 2012+
то необходимо править конфиги, и об этом прямо не указано было в инструкции что тогда была нам предоставлена (кстати автор темы не указал ссылку на инструкцию о которой конкретно он говорит :) я так думаю имеется в виду Статья на "Академии")
И она мягко говоря "так себе".
Минутка объективной критики:
1) Так вот в статье и сейчас не написано, что по умолчанию в конфиге идут настройки для SuperSockets и надо одни директивы заменить на другие
А в идеале даже показать какие на какие, чтобы была возможность воспользоваться поиском нормально, а не угадайкой искать.
2) Неплохо было бы упомянуть, хоть вскользь :wink: что непосредственно компонент Websokets вообще-то надо для начала установить, из диспетчера сервера в компонентах IIS сервера, в группе "Средства разработки"
3) Ну и неплохо было бы описать какую либо методику для проверки собственно корректной работы этих самых websokets (тех.подержка кстати так ничего внятного и не ответила на запрос по методологии проверки), но как минимум указать что при запуске приложения, открывайте консоль и ожидайте получить там сообщение о корректном подключении по Websokets

Что это будет одним из первых сообщений при загрузке страницы в формате:

WebSocket-connection opened for url:ws://{ВашСервер}:{Порт}/0/Nui/ViewModule.aspx.ashx

за авторством all-combines.js
PS: Хотя как показала практика, это не гарант корректной работы.
Для более гарантированной проверки следует инсцинировать удаление связанных данных, например создать Активность связанную с контактом и попробовать удалить последнего, и в случае если вы получите сообщение "Удаление данных произошло с ошибкой, обратитесь к системному администратору", то 90% у вас некорректно работают WebSockets.
4) Неплохо было бы описать доступные атрибуты XML директив: portForClientConnection, encrypted, может есть какие-то еще но в опущенном виде принимают дефолтовые значения и т.д.

По сему еще раз предлагаю - собрать инициативную группу "тех кто уже помучался и знает" возможные косяки" и что куда, и накидать годную инструкцию с блекджеком и... разбором типовых проблем в том числе.

"Севостьянов Илья Сергеевич" написал:2) Неплохо было бы упомянуть, хоть вскользь что непосредственно компонент Websokets вообще-то надо для начала установить, из диспетчера сервера в компонентах IIS сервера, в группе "Средства разработки"

"Севостьянов Илья Сергеевич" написал:Неплохо было бы описать доступные атрибуты XML директив: portForClientConnection, encrypted

серьезно?

"Севостьянов Илья Сергеевич" написал:методику для проверки собственно корректной работы

1) проверка консоли на ошибки WS - как Вы описали, только не путать с сокетами телефонии (например, Webitel'a)
2) проверка соединений WS во вкладке Network инструментов разработчика

2.1) запуск любого БП с интерактивными элементами, идущими после системных - при неработающих сокетах элементы не откроются пользователю.
2.2) запуск различных действий, ожидающих асинхронного ответа от сервера: удаление записей, импорт из эксель
3)Если у вас два сайта на одном сервере с одинаковыми клиентскими портами на сокетах (актуально только для SuperWS), то элементы будут открываться, только до тех порт пока на другом приложении WS-соединение не обновится - тогда на первом в консоль посыплются ошибки, что соединение потеряно

"Севостьянов Илья Сергеевич" написал:1) Так вот в статье и сейчас не написано, что по умолчанию в конфиге идут настройки для SuperSockets и надо одни директивы заменить на другие

согласен, это не помешает

"Андросов Дмитрий" написал:Неплохо было бы описать доступные атрибуты XML директив: portForClientConnection, encrypted

Естественно я имею в виду не перевод с английского языка :lol:
Я имею виду нотацию - краткое описание назначения аттрибута и допустимых его значений.
н/п какие значения может принимать аттрибут encrypted - только true/flase или возможно там может быть указан конкретный протокол шифрования, например encrypted="AES", encrypted="RSA256"
Что это вообще за шифрование, чего с чем, каким алгоритмом при значении true portForClientConnection=0, что означает присвоения этому атрибуту нулевого значения, нет такого порта TCP это loopback :biggrin:, в данном случае скорее всего имеется в виду что при нуле - порт будет произвольный (но это догадки)

А так же вообще поименованный перечень всех допустимых аттрибутов для диррективы, т.к. некоторые могут быть опущены но по факту существовать и иметь значения "по умолчанию".

Илья, здравсвуйте!

В bpmonline есть два типа подключения по websocket:

  1. MicrosoftWSService
  2. SuperWSService

В зависимости от версии сервера, можно настроить нужное подключение: 2008 поддерживает только SuperWSService, 2012 - оба (при включенной компоненте WebSocket).
Теперь по параметрам:
defaultPort - порт для подключения. Необходимо настраивать только для SuperWSService.
portForClientConnection - при параметре 0 указывает, что порт не задается. Параметр был создан для ранних версий приложения для маршрутизации подключений в случае, если на одном сервере приложения развернуты несколько сайтов. Сейчас по сути не используется.

Параметр encrypted отвечает за защиту соединения. По этой причине может принимать два значения - true (защищенное), false (незащищенное). Изменение этого параметра описано в статье по переводу сайта на https. Изменение параметра возможно только на 2012 сервере - мне не удавалось настроить https при подключении websocket по типу SuperWSService.

Отлично.
Вот теперь осталось все скомпилировать в "годную" инструкцию.
Не хочется тратить время зря, по этому спрошу представителей тех.поддержки (если они здесь присутствуют):
Если я аккумулирую знания предоставленные пользователями в этой теме в единую инструкцию - вы разместите ее на Академии, или это начинание никудышное ?

и кстати, в 7.10 есть автоматическая проверка сокетов

"Севостьянов Илья Сергеевич" написал:Если я аккумулирую знания предоставленные пользователями в этой теме в единую инструкцию - вы разместите ее на Академии, или это начинание никудышное ?

лучше напишите коммент на статью

"Андросов Дмитрий" написал:и кстати, в 7.10 есть автоматическая проверка сокетов

За всю практику видел этот "пушап" только один раз, и еще на 7.9.1
При этом с сокетами регулярно имелись проблемы, так что адекватность своевременного пушапа - под вопросом.
Когда его увидели даже ходили в саппорт и вопрошали на предмет: "Раз уж есть какая-то само диагностика которая собственно и выводит сие сообщение, - как ее запустить принудительно, так как была показана единожды, проблемы не решены но и сообщения больше не показывается".
Так нам ничего и не ответили... толком, посоветовали ходить удалять связанные с активностями контакты и т.д.
Вы знаете как запустить такую проверку вручную или инсценировать ее ?
"Андросов Дмитрий" написал:лучше напишите коммент на статью

еще недавно на сайте академии все вот эти комментарии на статью банально не работали - валились с ошибкой AJAX запроса - это поправили ?

Илья, какая у вас конкретно проблема, что вы хотите реализовать? Отзывы на академии работают.

"Севостьянов Илья Сергеевич" написал:Вы знаете как запустить такую проверку вручную или инсценировать ее ?

рискну предположить, что так

"Демьяник Алексей" написал:Илья, какая у вас конкретно проблема, что вы хотите реализовать?

"Севостьянов Илья Сергеевич" написал:Если я аккумулирую знания предоставленные пользователями в этой теме в единую инструкцию - вы разместите ее на Академии, или это начинание никудышное ?

Здравствуйте!

Илья, рекомендую оставить отзыв на Академии, указав неточности, а также информацию, которой не хватает. Согласно этим рекомендациям и потребностям статьи будут расширены.

Здравствуйте!

Илья, рекомендую оставить отзыв на Академии, указав неточности, а также информацию, которой не хватает. Согласно этим рекомендациям и потребностям статьи будут расширены.

"Демьяник Алексей" написал:Илья, рекомендую оставить отзыв на Академии, указав неточности, а также информацию, которой не хватает. Согласно этим рекомендациям и потребностям статьи будут расширены.

Это крайне неудобно учитывая что для инструкции требуются листинги и скриншоты.
Ну как говорится - "на нет и суда нет".
Обращаясь к пользователям сообщества - считаете ли Вы что такую статью можно (или даже нужно) разместить здесь - на форуме сообщества ?

Илья, рекомендую разместить инструкцию в разделе "Блоги" на community.

Показать все комментарии

В консоли браузера обнаружил множество ошибок вида:

WebSocket network error: Не удалось завершить операцию. Операция превысила ресурс времени

Что делать? Как лечить?

Нравится

22 комментария

По-моему у Вас в IIS не включен WebSocket:

In Control Panel, click Programs and Features, and then click Turn Windows features on or off.
Expand Internet Information Services, expand World Wide Web Services, expand Application Development Features, and then select WebSocket Protocol.

© http://www.iis.net/configreference/system.webserver/websocket

Включен, 100%

Тут смотрим компоненты сервера (стр.6):
http://www.training.terrasoft.ru/sites/default/files/BPMonline_Setup_Gu…
Т.е. таки проверьте все ли компоненты у вас включены.

А после проверьте открыт ли у вас TCP/UDP порт 2011 - именно по нему работает WebSocket Protocol по-умолчанию.

telnet -a en.demo.bpmonline.com 2011

хм... действительно, похоже, причиной был порт.

Поторопился.
Проблема остается.
после того, как открыл порт, команда: telnet -a myserver 2011 успешно выполняется - соединение устанавливается.
Но, в консоли браузера теперь я вижу другую ошибку:

WebSocket network error: Не удалось завершить операцию. Подключение отклонено

Попробовал зайти в BPMonline непосредственно с той машины, на которой он установлен. Там - тоже вижу ошибку, но другую.

сначала:
WebSocket Error: Network Error 12030, Подключение к серверу было неожиданно прервано

и, следом:
WebSocket Error: Network Error 12029, Не удается установить связь с сервером

Прилагаю небольшой док по настройке:
nastroyka_websocket.doc
Если не поможет решить проблему, предоставьте, пожалуйста, версию bpm'online, версию Windows, на которой развернут сайт, скриншот ошибки и файл web.config из директории Terrasoft.WebApp приложения.
Спасибо!

Извините, но это - инструкция для инопланетян, а не для пользователей далеко НЕ БЕСПЛАТНОГО продукта!

bayborodin, если Вы решили работать с системой on-site, предполагается, что у Вас есть админ, который может поддерживать сервера БД и приложений и понимает, что такое конфигурационные файлы и как с ними работать. В противном случае предлагаю обратиться в техническую поддержку для получения более детализированной инструкции.

но у вас там и правда не понятно
сначала

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService, Terrasoft.Messaging.MicrosoftWSService" defaultPort="0" encrypted="false" portForClientConnection="44310" />

а чуть ниже

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService, Terrasoft.Messaging.MicrosoftWSService" encrypted="false" portForClientConnection="2011" />

Андрей, рискну предположить, что моя квалификация будет повыше, чем у рядового админа. Совет не уместен. Лучше постыдились бы такой сырой продукт на рынок выпускать.

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

"bayborodin" написал:Лучше постыдились бы такой сырой продукт на рынок выпускать.

при покупке on-site делается особое замечание о том, что все трудности и тяготы поддержания работоспособности серверов и сервисов берет на себя клиент.
Подобное замечание было бы уместно только в отношении он-деманд в случае, если бы там не могли бы решить эту проблему.

Дмитрий, не соглашусь с вами!
Собрать инсталятор, который поднимет хост на IIS и соберет конфигурационные файлы под конкретную систему - не великая задача. Вместо этого, клиенту предлагается архивчик с файлами. Это говорит о качестве продукта.
Продукт не снабжен документацией в той мере, к которой требует его администрирование. Это говорит о качестве продукта.
Клиенту предлагают в качестве решения невнятный вордовый документ, которого не касалась рука технического редактора. Это говорит о качестве продукта.

"bayborodin" написал:Собрать инсталятор, который поднимет хост на IIS и соберет конфигурационные файлы под конкретную систему - не великая задача. Вместо этого, клиенту предлагается архивчик с файлами.

Инсталятор есть (или был). Но поверьте - лучше архивчик, он более гибок.

Инструкция (которая и не инструкция вовсе) не понятна, все остальное - эмоции.

bayborodin, Вы обращаетесь за помощью на форум, где зарегистрироваться может любой желающий и писать практически все, что захочет, и выражаете недовольство качеством ответов пользователей форума, которые совершенно необязательно даже имеют отношение к компании Terrasoft и выпускаемых ею продуктов.
Мне кажется, это не самое подходящее место. Форум существует для того, чтобы помогать решать вопросы и обмениваться опытом.
Если у Вас есть претензии и/или пожелания по улучшению качества продуктов и инструкций к ним, обращайтесь, пожалуйста в техническую поддержку или в раздел "Идеи". Будет больше пользы.

"Андросов Дмитрий" написал:

Инсталятор есть (или был). Но поверьте - лучше архивчик, он более гибок.


От инсталлятора пока что отказались вроде бы.

Андрей, прошу извинить меня, если чем-то задел.
Дело в том, что ровно ту же самую инструкцию мне прислала техподдержка Террасофта. Тем самым они автоматически берут на себя ответственность за тот материал, который высылают своим пользователям в качестве решения.
Претензии - к ним, не к вам!

bayborodin, нет проблем. Просто не совсем понятно, зачем это писать на форуме.
Есть цель - решить проблему с веб-сокетами. Проблема решена? Если да - хорошо. Если нет, то давайте дальше работать над решением.

Как вариант - сделать 2 файла Web.config
Какой нужно, такой и выбираешь

Подскажите разницу между параметрами defaultPort и portForClientConnection во внутреннем Web-конфиге. Как я понимаю, сервер может сам инициировать соединение WebSocket (то есть выступать в роли клиента) и в этом случае он буде пытаться подключиться к ip_клиента:portForClientConnection ?

Здравствуйте!

portForClientConnection – параметр, который нужно использовать при работе с web фермой. Если Вы веб ферму не используете – то данный параметр лучше установить в 0

Он позволяет задать принудительно вручную порт для WS подключения с клиента, в случае защищенного канала (только для SuperWS).

Показать все комментарии