|
1C + WebSocket - не запускается из общего модуля... | ☑ | ||
---|---|---|---|---|
0
AnBlast
10.04.24
✎
10:10
|
Есть обработка, которая запускается вручную и держит обмен по WebSocket. Все работает...
Надоело запускать обработку руками (перезапускать, следить...) и пытаюсь переделать это дело на регламентное задание - и нифига! не поднимается коннект. Обработка работает на локальном пользовательском компе, а регламент жеж на сервере. Для теста открыли весь интернет на сервере - не работает. Запускаю руками - ок, а из регламентом из модуля обработки (или общего модуля) - не работает. Скорее всего дело именно в контексте... но может я жутко что-то не догоняю в архитектуре этого дела. Подскажите, плиз, куда копать... Заранее Спасибо! |
|||
1
AnBlast
10.04.24
✎
10:11
|
вебсокет - нативная компонента в макете.
|
|||
2
p-soft
10.04.24
✎
10:17
|
самое простое - зайти в список регламентных заданий, найти и открыть карточку нужного и проставить там пользователя, под которым все работало при ручном запуске.
|
|||
3
AnBlast
10.04.24
✎
10:36
|
а нет еще регламентного задания... я просто запускаю все то же самое, только код перенесен из модуля формы в модуль обработки или общий модуль. И не работает
|
|||
4
p-soft
10.04.24
✎
10:39
|
(3) а, понятно. не регится компонента на стороне сервера. регится она под правами, под которыми служба запускается - надо копать в эту сторону
|
|||
5
AnBlast
10.04.24
✎
10:41
|
а нативная копмонента (она в макете обработки) должна региться? вроде ж как в том и приемущество такой реализации компоненты
|
|||
6
steep1
10.04.24
✎
11:01
|
(0) где-то в обработке используешь пути неотносительные
|
|||
7
AnBlast
10.04.24
✎
11:06
|
(6) а нету там никаких путей... просто поднимается вебсокет из нативной компоненты.
на локальном компе (я админ локальный) - все ок при запуске с формы, но не ок при запуске из модуля (конфа на сервере - на другом физическом компе) на сервере, где живет конфа - с формы запускается если открыть путь через фаервол, а при запуске из модуля - ни при каких раскладах не запускается |
|||
8
p-soft
10.04.24
✎
11:38
|
(7) там все равно идет вызов метода, загружающего компоненту, на этом этапе бывают затыки с разных сторон. отладчик и смотреть что именно не выполняется.
вполне может быть проблема взаимодействия компоненты с ОС. винда, линух? |
|||
9
AnBlast
10.04.24
✎
11:44
|
(8) та в том то и вопрос, что нет ошибок. и на "ту сторону" не приходит ничего от меня. а ошибок нет...
|
|||
10
AnBlast
10.04.24
✎
11:45
|
и не уходит с меня... я на фаерволе не вижу никакого пакета
|
|||
11
p-soft
10.04.24
✎
11:48
|
(9) я пока про взаимодействие 1с и операционной системы. загрузка компоненты без ошибок происходит? просто не отрабатывает инициализация сокета? надо логгирование в компонение включить/сделать
|
|||
12
arsik
10.04.24
✎
11:59
|
(10) Не пробовал на сервере 1С запускать клиента и попробовать от клиента но с сервера?
|
|||
13
PloAl
10.04.24
✎
12:06
|
(0) Скорее всего проблема во внешнем событии, на сервере 1с не доступно "ВнешнееСобытие()".
Обычно для сервера используют синхронный метод ВК в цикле. Т.е. серверный код без событий, постоянно висит на строке вида: Пока ВК.ПолучитьВнешнееСобытие() Цикл |
|||
14
AnBlast
10.04.24
✎
12:07
|
(11) компонента чужая... доделать там что-то - пожалуй выше моей квалификации.
(12) пробовал - если открыть фаервол, то все запускается. ну т.е. если запускать с формы, то все ок. но в обоих случаях я на выходе вижу успешный запуск (результат одинаковый). Но, судя по всему, не проходит пакет на поднятие сокета на ту сторону если я запускаю это дело из модуля (т.е. как я понимаю с сервера), а не с формы |
|||
15
arsik
10.04.24
✎
12:18
|
(14) Ну что тут сказать - жди 27 платформу.
Видимо для инициализации нужен клиентский контекст, иначе как она будет тебе событие создавать при получении. То что в ошибку не падает - это лишь реализация компоненты такая. |
|||
16
AnBlast
10.04.24
✎
12:49
|
(15) ну такое )) у меня 8.3.10 и прыгать с нее на 27ю - тот еще квест
|
|||
17
arsik
10.04.24
✎
13:01
|
(16) Там прям много и часто в(из) вебсокета данные льются?
Если прям несильно нагружено, можно наверно через http сервис реализовать. Посредника между http и websocket на много чем можно реализовать (php, go, python) |
|||
18
AnBlast
10.04.24
✎
14:33
|
(17) не то, что б много, но неожиданно.
мне присылают по вебсокету всякие события, которые надо быстро обработать |
|||
19
AnBlast
11.04.24
✎
14:16
|
Итерация №2
... судя по всему у меня код должен выполняться на клиенте. На сервере и в серверных модулях оно не работает - это 100% надо что б клиентский код выполнялся при запуске системы. Запхал его в МодульОбычногоПриложения - не работает. Мне, походу, не хватает квалификации - посему прошу помощи/совета. Откуда правильно запускать и в каком режиме "клиентский" код? |
|||
20
arsik
11.04.24
✎
14:38
|
Для начала можно так попробовать
ПодключитьОбработчикОжидания("ЗапуститьКакойНиБудьКлиентскийМетод",1,Истина); |
|||
21
AnBlast
11.04.24
✎
14:45
|
обработчик ожидания мне не очень надо... мне надо поднять вебсокет выполнив определенный код (он работает с кнопки обработки и не работает никак иначе)...
но попробовал. воткнул обработчик ожидания в МодульОбычногоПриложения - не работает. Все отрабатывает, но веб сокет не конектится ... |
|||
22
arsik
11.04.24
✎
14:50
|
Ну наверно перед этим нужно проинициировать компоненту. И возможно этой компоненте нужна форма.
|
|||
23
AnBlast
11.04.24
✎
14:52
|
(22) ну я делаю ровно то же самое, что и с кнопки на форме.
а "возможно этой компоненте нужна форма" - я этого вообще не понимаю. |
|||
24
p-soft
11.04.24
✎
15:25
|
(19) делайте как раньше в 77: заходим под сеансом на сервак, запускаем руками или автоматом обработку-регламент, оно там висит и кушать не просит. единственно - одну лицензию тратит, но это мелочи
|
|||
25
AnBlast
11.04.24
✎
15:52
|
(24) я уже так согласен... но что делать если надо перезапустить ночью после "падения коннекта"?
|
|||
26
p-soft
11.04.24
✎
15:58
|
(25) коннект с сервисом обрабатывайте тем же регламентом. запуск сеанса 1с.. ну как угодно)
|
|||
27
arsik
11.04.24
✎
16:32
|
Клюшечный вариант - буэээ.
Мой выбор прокладка-сервис. |
|||
28
lEvGl
11.04.24
✎
17:49
|
(0) что за компонента, описание к ней есть?
|
|||
29
lEvGl
11.04.24
✎
18:06
|
общий план действий такой
достаем компоненту из макета, загружаем, если нет, то устанавливаем, то есть через попытку Если Не Загрузить() Тогда Установить() КонецЕсли; Загрузить(); Сокет = Новый ("ЕеИмя"); потом в соответствии с описанием Сокет.Инициализировать() там тратата на каждое действие в серверном контексте выполнения можно лог писать, что успешно, что нет, чтобы было понятно что там происходит. Если все отрабатывает, а коннекта к серверу по сокету нет, значит проблема на уровне взаимодействия 1с и ОС или самой ОС в плане сети/безопасности/прав/фаерволов и тд а. че ее доставать из макета, метод загрузки/установки принимает имя макета как путь |
|||
30
lEvGl
11.04.24
✎
18:21
|
ну и потом, можно так то и свой сокет сделать с блекджеком. Я так понимаю эта компонента Сокет сервер, раз в нее данные льет клиент. В нете есть готовые сокет сервера для плюсов, шарпа, что ближе. Или даже дллы есть, мелкомягкие с tcp и udp. Тогда можно будет предметно думать как обрабатывать полученные данные. А сейчас даже ведь неизвестно, что она делает? Собственно тут вобще вопрос ее взаимодействи с 1С. Она по технологии ВК для 1С если, то будет выкидывать во внешнее событие, оно только на клиенте есть. Как бы вопросов много очень, хотя бы что она делает после получения данных от клиента? Пишет в бд 1ц? Каким образом, если обработкой внешнего события, то это клиент по сути делает, а не ВК, и тогда она вполне вероятно имеет какую то проверку на контекст выполнения кода, которым она цепляется в память в рамках 1Сного процесса. Если клиентский то ок, а если серверный, то болт, работать не будет, т к внешнего события нет, то и до свидания. А то может и напрямую в скл заливает?
|
|||
31
arsik
11.04.24
✎
19:36
|
Да не живет вебсокет в серверном пространстве. Вебсокет - это не только пишущий интерфейс но и слушающий. Как он на сервере слушать будет? После серверного вызова все очистится. Ну или в каждом серверном вызове создавать сокет. Но это уже не вебсокет получается.
|
|||
32
lEvGl
11.04.24
✎
19:47
|
точна, еще и это, поэтому свой вин сервис, будет висеть и слушать
или как правильно сказали, веб сервис то же самое ухо у нас чувак, ушел, сделал загрузку из базы сторонней софтины при помощи формы и активиксом на ней, на клиенте само собой. если пользователь не зашел, то и загрузки нет. то ли разработчик софтины не дал нормальной компоненты, то ли чувак натупил |
|||
33
ДедМорроз
11.04.24
✎
19:51
|
Как вариант,публиковать web-сервис базы 1с,а потом делать посредника,который при получении пакета в web-socket шлёт его в web-сервис через http.
|
|||
34
spiller26
11.04.24
✎
21:48
|
Мы пробовали web-socket + 1С, только вот работал он у нас только на клиенте, на сервере так и не захотел работать.
|
|||
35
oleg_km
11.04.24
✎
22:11
|
(31) В бесконечном фоновом задании. У меня так работали TCP, UDP и HTTP серверы, пока 1С не придумало HTTP-сервисы. Сейчас все посносил нафик. Если нужен TCP сервер, то реализую его на ASP.NET Core и отдаю данные в 1С по HTTP
|
|||
36
MaximSh
12.04.24
✎
08:14
|
(0) Агент сервера 1С:Предприятия под локальным пользователем USR1CV8 запускается?
|
|||
37
yopQua
12.04.24
✎
08:32
|
В бесконечном фоновом задании ну это треш |
|||
38
AnBlast
15.04.24
✎
12:19
|
(36) да
|
|||
39
yopQua
15.04.24
✎
12:35
|
(38) в качестве эксперимента можно попробовать этот трешевый вариант, чтобы просто понимание пришло, что на сервере происходит
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |