|   |   | 
| 
 | 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) в качестве эксперимента можно попробовать этот трешевый вариант, чтобы просто понимание пришло, что на сервере происходит     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |