У нас в системе был БП, что обновлял страницу (посылал сообщение на клиент) Вчера все работало, сегодня в обновленной версии не обновляет страницу в консоле ошибка, что-то про Decode

h {sourceClass: "Ext.JSON", sourceMethod: "decode", msg: "You're trying to decode an invalid JSON String: ReloadMessage", message: "You're trying to decode an invalid JSON String: ReloadMessage"}

 

Это у нескольких клиентов. Пока ТС думает, может кто подскажет как решить самостоятельно?

 

В самой схеме такой код на прием сообщения

init: function() {

                this.callParent(arguments);

                this.subscriptionFunction();

            },

subscriptionFunction: function() {

Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE,

this.bpListenerMessage, this);

},

bpListenerMessage: function(scope, message) {

if (!message || message.Header.Sender !== "Reload") {

return;

}

var message2 = message.Body;

if (!this.Ext.isEmpty(message2) && message2 === "ReloadMessage") {

this.reloadEntity();

}

},

destroy: function() {

this.Terrasoft.ServerChannel.un(Terrasoft.EventName.ON_MESSAGE, this.bpListenerMessage, this);

this.callParent(arguments);

}

 

А в бп в скрипте такой код:

var connection = Get("UserConnection");

Terrasoft.Configuration.MsgChannelUtilities.PostMessage(connection, "Reload", "ReloadMessage");

return true;

 

Нравится

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

Если в скриптах ничего не меняли и перестало работать после обновления, причина может быть в отключившихся веб-сокетах. Как их настраивают, см. тут.

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

Клиент в облаке. У другого клиента аналогичная проблема. У других партнеров аналогичные кейсы.

Получена информация о причине и способе исправления.

Для этого: 

1. В процессе в элементе ScriptTask экранировать кавычками ReloadMessage:

Terrasoft.Configuration.MsgChannelUtilities.PostMessage(connection, "Reload", "\"ReloadMessage\"");

2. В схеме строчку заменить на:

var message2 = Terrasoft.decode(message.Body);

Если message не json, то происходит исключение. В новой версии это исключение стал перехватывать zone.js, поэтому не срабатывала подписка:

Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE,
                            this.bpListenerMessage, this);

Сейчас разработчики решают,  будут ли что-то делать в связи с этим. 

Разработчики обнаружили первопричины проблемы. Она будет исправлена в версии 7.17.2, на текущий же момент для исправления достаточно вместо упомянутых выше правок установить пакет из файла. Пакет с фиксом актуален для всех версий 7.17.0.

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

Добрый день! Не получилось накатить пакет на прод и откатить его же. Валятся ошибки:

 

Ошибка установки данных "SysModuleEdit_OmniChat" из пакета "OmnichannelMessaging". UId 79c8d730-1a6e-4467-88a2-dc33cf681d5e: The UPDATE statement conflicted with the FOREIGN KEY constraint "FKfswQzuMwAT8Bnlby6UilfQqmU". The conflict occurred in database "mod", table "dbo.SysModuleEntity", column 'Id'.



Ошибка установки данных "SysModule_OmniChat" из пакета "OmnichannelMessaging". UId d338d0b8-eb04-42ab-8789-f6a3ace6e8eb: The UPDATE statement conflicted with the FOREIGN KEY constraint "FKsUTsBBLbO1DA4j0DdV9M0R0UW0U". The conflict occurred in database "mod", table "dbo.SysModuleEntity", column 'Id'.

 

Можете подсказать/посоветовать как поступить, куда копать?

Всё заработало просто - накатываем пакет и, если возникает ошибка, не откатываем.

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