Имя: Пароль:
1C
 
Чат на сокетах
,
0 PR третий
 
11.07.15
02:04
1. А нафига? 80% (8)
2. Сделали, ты просто не знаешь. Например, вот... 20% (2)
3. Свое мнение 0% (0)
Всего мнений: 10

Странно, почему до сих пор никто не сделал в 1С чат на сокетах? Без нагрузки на 1С, по-человечески.
44 ДенисЧ
 
11.07.15
16:48
(42) мне 30%
45 PR третий
 
11.07.15
16:48
(43) Абсолютно верно. Про скуль я написал просто так, по сути он ничего не дает, да.
46 PR третий
 
11.07.15
16:49
(44) Я не жадный, могу и 100% отдать
47 ДенисЧ
 
11.07.15
16:50
(46) Я же не вранчь-хапуга, не стану 5 шкур драть
48 PR третий
 
11.07.15
16:52
(47) Договорились. Как налоги платить буду, все платежи заворачиваю на тебя.
49 Garykom
 
гуру
11.07.15
16:55
(36) понимаете в чем проблема
с точки зрения ит без разницы будет клиентская 1с сервер опрашивать насчет новых сообщений или это будет делать ВК (по tcp/ip)
50 Garykom
 
гуру
11.07.15
17:00
(49) если по рабоче-крестьянски то

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

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

ЗЫ на уровне сокетов tcp оно примерно так и происходит (вариант ненадежной передачи udp не рассматриваем, там еще хуже приходится периодически сверять вручную кол-во переданных/полученных сообщений)
51 ДенисЧ
 
11.07.15
17:00
(48) Угу. В сторону получателя. Только налоговая на тебя обидится.
(49) Имхается мне, что Рома и "понимаете" - находятся на разных планетах...
52 PR третий
 
11.07.15
17:00
(49) Это да.
Но:
1. Есть разница, как проверять, есть новые сообщения или нет.
Для этого можно запрос данных 1С делать, можно, например, файл на диске на сервере проверять, еще что-нить.
2. Что очень важно, события генерит тот, кто пишет сообщения, а не тот, кто их получает.
53 Serginio1
 
11.07.15
17:01
(37) http://merle-amber.blogspot.ru/2012/11/real-time-aspnet-signalr.html

Полезные ссылки

Если вы хотите посмотреть пример приложения на SignalR, то вы можете скачать пример приложения, показывающего обновляющиеся биржевые котировки с GitHub (https://github.com/SignalR/SignalR-StockTicker), либо зайти на http://jabbr.net и попробовать вживую пример, реализующий чат. Кстати, на Jabbr в комнате, посвященной SignalR довольно часто бывает David Fowler, и у него можно спросить любой вопрос, который вас интересует.
54 ДенисЧ
 
11.07.15
17:02
вы тут сейчас такими темпами token-ring изобретёте...
55 PR третий
 
11.07.15
17:02
(50)  Именно.
Я поэтому и говорю про "есть возможность настроить постоянное подключение через сокет клиента с сервером".
56 Garykom
 
гуру
11.07.15
17:02
(52) а может все таки почитать про сокеты? асинхронные? снаружи то они такие... а вот внутри очень даже синхронные только полнодуплекс
57 ДенисЧ
 
11.07.15
17:03
(56) Что сделать???
Ты рамсы попутал? )))))))
58 Garykom
 
гуру
11.07.15
17:03
(55) по этому постоянному подключению, постоянно идет запрос "я переварил, давай еще данные"
59 PR третий
 
11.07.15
17:04
(56) Да я пытаюсь почитать. Но видимо не тяну. Хочется где-то на уровне как для чайников прочитать.
60 Garykom
 
гуру
11.07.15
17:04
(58)+ дальше с неким таймаутом если новые данные не прилетают, снова идет запрос "ау, где данные, я готов"
61 PR третий
 
11.07.15
17:05
(58) Хм, в смысле клиент говорит серверу "Дай мне данные" и ждет, пока ему не дадут?
62 Garykom
 
гуру
11.07.15
17:06
(61) ага... и если нет данных снова вопит "дай данные" периодически
63 Garykom
 
гуру
11.07.15
17:07
(62)+ если после нескольких "дай данные" нет ответа "жди скоро будут, но пока нету" то падает эксепшн
64 PR третий
 
11.07.15
17:08
+(61) Если я правильно понял, есть два варианта работы:
1. Синхронный, когда клиент говорит серверу "Дай данные" и ждет, пока ему их дадут
2. Асинхронный, когда клиент говорит серверу "Будут данные, генери мне событие" и потом проверяет, нет ли события

Общий смысл тот же самый, но на низком уровне разница в том, что события ловит операционка, а в случае синхронного сокета просто крутится бесконечный цикл.
Так?
65 Garykom
 
гуру
11.07.15
17:08
(64) угу
66 H A D G E H O G s
 
11.07.15
17:09
(64) нет
67 Garykom
 
гуру
11.07.15
17:09
(65)+ асинхронка это чтобы программер свой цикл сам не крутил, вместо него реализация протокола крутит
68 H A D G E H O G s
 
11.07.15
17:09
вы такие забавные
69 Garykom
 
гуру
11.07.15
17:10
(66) тогда... как определяется в случае tcp сокетов разрыв связи? ;)

ЗЫ еще раз, udp не рассматриваем
70 Garykom
 
гуру
11.07.15
17:11
(68) во сразу 2 плюса, и "смешно", и "все понятно"
71 H A D G E H O G s
 
11.07.15
17:12
асинхронные сокеты - ты передаешь в компоненту указатель на твою процедуру, которая будет вызвана при событии в сокете. Поток организует компонента.

синхронные сокеты - ты сам организуешь отдельный поток (thread) чтения-записи с сокетом.
72 Garykom
 
гуру
11.07.15
17:14
(71) эта... есть 4 слагаемых, 2 переставили, что изменилось?
73 PR третий
 
11.07.15
17:15
(71) И что ты сказал другого? Дим, то же самое ведь :))
74 H A D G E H O G s
 
11.07.15
17:18
афтору надо написать 2 компоненты

синхронные-асинхронные сокеты - фигня и не стоит о них думать даже.

tcp клиент, который будет работать на клиенте.
tcp сервер, который будет работать на... тоже клиенте 1с.
75 Garykom
 
гуру
11.07.15
17:19
(74) как бы такой клиент и такой сервер уже есть в 1С... и даже на клиенте как ни странно оба...
76 H A D G E H O G s
 
11.07.15
17:21
и тут я вижу 2 пути:

1 клиент 1с берет на себя функцию сервера и рассылает сообщения получателям ( получатели - список в заголовке сообщения)

каждый клиент 1с является сервером tcp и к нему напрямую подключаются другие клиенты tcp. при этом, чтобы отослать сообщения списку клиентов - надо последовательно подключиться к каждому из них
77 H A D G E H O G s
 
11.07.15
17:23
Идеально было бы заставить сервер 1с стать сервером tcp, но не получается.

его appdispatch недоступен в потоке, отличном от вызываемого, даже с применениям маршрутизации интерфейсов. А без appdispatch нет никаких ВнешнихСобытий
78 PR третий
 
11.07.15
17:23
(75) Но использовать это нельзя, я так понимаю?
79 PR третий
 
11.07.15
17:24
+(78) Ага, видимо по (77) да
80 PR третий
 
11.07.15
17:25
(76) Именно так, да, сервер-то в такой схеме в принципе и не нужен.
81 PR третий
 
11.07.15
17:26
Мне вот интересно, на VB это возможно?
И делать нужно native 1C DLL, верно?
82 PR третий
 
11.07.15
17:28
И опять же, что для работы всей этой печали нужно?
Типа если компонента подключилась, то все хоккей, если нет, то нет? Или, если даже подключилась, то это еще бабушка надвое сказала?
83 H A D G E H O G s
 
11.07.15
17:28
хотя я счаст подумал светлую мысль.

Все клиенты 1с подключается к серверу 1с по служебному протоколу.

Сервер 1с получается какие то данные и по служебному протоколу пинает клиентов 1С, которые у него в списке получателей.

Клиент 1С по пинку считывает данные с сервера 1С

Пинок универсален, это не только обмен сообщениями, это сигнал того, что на сервере что-то произошло (например, изменился файл, за которым назначено наблюдение).

Прелестно.
84 Garykom
 
гуру
11.07.15
17:32
(83) $))
85 PR третий
 
11.07.15
17:39
(83) Это мысль, что лучше все же делать сервер или что можно как-то поиспользовать 1С для своих целей. Или что-то третье?
86 Serginio1
 
11.07.15
17:50
(62) Ну почитайте вы ссылки прежде чем что то утверждать.
http://merle-amber.blogspot.ru/2012/11/real-time-aspnet-signalr.html

Вообще там событийная система.
87 Zamestas
 
11.07.15
17:51
(84) Может бегемота из План написания убийцы TeamViewer и прочих Ammyy... и начинать с этого строить?
88 Serginio1
 
11.07.15
18:09
(0) Если клиенты в Вэбе то SignalR если внутри сети то
WCF Callbacks

http://www.sandfield.co.nz/news/thats-technical/193/WCF-Callbacks
89 Samosval
 
11.07.15
18:34
90 Garykom
 
гуру
11.07.15
18:36
(86) а может я не говорил вообще то про эту "SignalR" ?
а про сокеты tcp писал?
91 Garykom
 
гуру
11.07.15
18:38
(87) бегемота не в этом болоте застрял...
92 Провинциальный 1сник
 
11.07.15
18:45
(54) А что вы имеете против токенринга? В своё время он уступил езернету исключительно в силу более простой электроники последнего. А теперь, когда процессоров как семечек - вполне бы взлетел. У него куча вкусностей по сравнению с эзернетом была бы..
93 Zamestas
 
11.07.15
18:53
(92) Оно как латынь.
94 Garykom
 
гуру
11.07.15
18:54
(92) а иерархию на кольцах строить как же?
95 Garykom
 
гуру
11.07.15
18:56
(94)+ и как раз процессоры (в свичах) и добили колечки... ибо преимущество фуллдуплекс по сравнению с постоянными коллизиями на хабах того...
96 Провинциальный 1сник
 
11.07.15
19:11
(94) Там же кольцо логическое, а физически - звезда. Вполне возможно было сделать коммутируемые кольца с иерархией коммутаторов. То есть, маркер ушел на дочерний линк - прошел по тамошнему кольцу, вернулся обратно.
(95) Да эзернет в своё время просто взял фору за счет дешевой топологии "кто кого перекричить на базаре".. а когда появились коммутаторы и возможность задешево засунуть в сетевое оборудование некую логику - про токенринг уже все забыли..
97 Zamestas
 
11.07.15
19:22
(96)Сервер1  Сервер2
         \   /
         Свитч0
         /   \
     Свитч1  Свитч2
     /    \   /   \
   WS1   WS2 WS3  WS4
Я я.х. какой ИИ должен обеспечивать передачу маркера(ов) при обмене трафиком в подобной сети.
98 Провинциальный 1сник
 
11.07.15
19:28
(97) Обход по "правилу правой руки" по всем портам всех коммутаторов, например.
99 spectre1978
 
11.07.15
19:30
(0) а... зачем это в 1С? Есть телефон на столе, есть мобильные, есть всякие приложения типа аськи и скайпа.

А нафига?
100 Провинциальный 1сник
 
11.07.15
19:32
(99) А как же классика "Через 10 минут всем выйти из 1с!"? Удобнее всего подобное через 1с и рассылать)
101 PR третий
 
11.07.15
19:36
(99) См. (39)
102 Индиго
 
11.07.15
19:37
(100)Я net send делал:-). Ген дир потом жаловался что его смущает мой безусловный императив "Всем выйти из ### базы"
:-)
103 PR третий
 
11.07.15
20:10
Хех, читаю в https://code.msdn.microsoft.com/-ASPNET-dd001bd0
"Напомню, что протокол WebSocket доступен только в операционных системах Windows 8 и Windows Server 2012, а также в более новых версиях (Windows 8.1 и Windows Server 2012 R2), поскольку реализован в виде низкоуровневого неуправляемого модуля IIS 8. То есть получается, что использовать данный проткол и возможности в предыдущих версиях Windows не получится.".

Не понял. То есть если винда не 8, то все, досвидос?
104 Провинциальный 1сник
 
11.07.15
21:32
Тут о серьезных вещах говорят, а не о всяких дотнетовских игрушках. Сокеты - это основа основ и они были всегда.
105 Serginio1
 
11.07.15
22:25
(90) SignalR Это надстройка над HTTP. HTTP это надстройка на TCP/IP.
Просто при получении события на уровне драйвера берется поток из пула потоков в котором обрабатывается событие клиента.
106 Serginio1
 
11.07.15
22:27
(103) Нет есть разные реализации. Но лучше использовать SignalR он поддерживает разных клиентов, но сервер работает на Windows Server 2012.
107 Serginio1
 
11.07.15
22:29
Например этот работает везде https://github.com/sta/websocket-sharp
108 Zamestas
 
11.07.15
22:53
(98) Какие плюсы это принесет?
109 PR третий
 
11.07.15
23:15
В общем, я запутался.
С точки зрения кошерности, универсальности и простоты что брать, SignalR?
Ну то есть чтобы работало везде или почти везде.
И чтобы технология была не костыли или самопальщина и не корявая прожорливая на ресурсы хрень. Ну и не глючная само собой.
И было бы неплохо, чтобы была попроще, но это уж как получится.
110 Serginio1
 
12.07.15
00:01
(109) Я бы выбрал SignalR как более универсальный
111 PR третий
 
12.07.15
00:41
(110) Так и делаю пока.
Выбрал пока для поиграться http://signalrchat.apphb.com (исходник https://github.com/moberg/SignalRChat).

И вот тут возник следующий вопрос, поскольку MS Visual Studio я скачал и запустил пару часов назад :))
Что дальше делать-то?
В режиме отладки я запустил, в двух браузерах на одном компе я сам с собой переписываюсь, да, круто.
Два вопроса на пути к счастью:
1. Что нужно сделать, чтобы запустить это по типу http://signalrchat.apphb.com, а не на локалхосте?
2. Что нужно сделать, чтобы в итоге все это прикрутить к 1С? Нужна ведь внешняя компонента в виде dll, я так понимаю? Или я не понимаю? :))
112 Serginio1
 
12.07.15
00:50
(111) А я тебе ссылку давал. Там есть примеры. В том числе обмен по TCP/IP.
113 PR третий
 
12.07.15
00:55
114 Serginio1
 
12.07.15
08:46
(113) Нет Логирование на WinHttp.WinHttpRequest.5.1
Что бы опубликовать ASP.Net приложение
https://msdn.microsoft.com/ru-ru/library/1y1404zt(v=vs.100).aspx
смотри Публикация веб-узла
115 Serginio1
 
12.07.15
08:47
В ссылке смотри реализацию событий отслеживания изменений в директории
116 Отладчик
 
12.07.15
11:31
1Ц:Программист сидит, кодит. Дома. Мама входит - Опять сынок переписываешься?

А нафига?
117 PR третий
 
12.07.15
13:32
Хм, наверное даже интереснее второй момент в (111), то есть каким-то макаром зарегить это в 1С и дальше понять, как это использовать.
Что-то в упор не понимаю, что дальше делать?
Брать SignalR.dll и с ней колдовать?
SignalR.dll нужно регить regsvr32? Без реганья SignalR.dll не обойдется, я так понимаю? Если да, то где, на каждом клиенте?
118 PR третий
 
12.07.15
13:41
Опять же интересно, подключить ее как Native API 1С я могу или для этого DLL нужно писать определенным образом?
119 Serginio1
 
12.07.15
13:48
(118) Смотри
http://catalog.mista.ru/public/238584/
и 114
120 Serginio1
 
12.07.15
13:50
Или пригласи человека который знает C#, рефлексию и СОМ
121 PR третий
 
12.07.15
14:10
(120) Самое смешное, что я сижу в одном здании с моим клиентом http://www.zecurion.ru/, который мне думаю все подскажет. Просто меня на выходных плющит, не могу дождаться завтра :))
122 Diversus
 
12.07.15
14:41
Ссылка в тему, кстати:

«Первый БИТ» интегрировал продукты на базе «1C» с мессенджером Telegram

http://www.cnews.ru/news/line/index.shtml?2015/07/09/597383
123 PR третий
 
12.07.15
14:46
(122) В (89) уже было.
124 Diversus
 
12.07.15
14:47
(123) Сорри, увидел уже
125 PR третий
 
12.07.15
14:50
Блин, прямо колбасит, когда не понимаешь общих принципов работы схемы.
Надо почитать с ИТСа про создание внешних компонент, чтобы хоть понять, чем COM от Native API отличается с точки зрения подготовки DLL :))
126 PR третий
 
12.07.15
15:39
Общение с Лустиным Алексеем дало имя Овсянкин Андрей aka Evil Beaver, что в свою очередь дало следующую пищу для ума http://catalog.mista.ru/public/184119/ :))
127 Провинциальный 1сник
 
12.07.15
16:55
(108) Предсказуемость задержек, это для реалтайма очень хорошо. Никакой псевдослучайности, всё четко может быть просчитано заранее.
128 Serginio1
 
12.07.15
17:44
(126) Прелесть SignalR в том, что ты можешь использовать Поле HTML документа. Там куча примеров на JavaScript
http://metanit.com/sharp/mvc5/16.1.php

Поддерживаемые клиентские платформы (браузеры) тоже многообразны:

Microsoft Internet Explorer 8, 9, 10, 11. Версии Modern, Desktop и Mobile

Mozilla Firefox: как на ОС Windows, так и на Mac ОС

Google Chrome: как на ОС Windows, так и на Mac ОС

Safari: как на ОС Windows, так и на Mac ОС

Opera: ОС Windows

Android-браузер

Также следует учитывать, что браузер должен поддерживать библиотеку jQuery 1.6.4 или более поздние версии.
129 H A D G E H O G s
 
12.07.15
18:44
Роман погружается в чудесный и захватывающий мир интерфейсного программирования.
130 PR третий
 
12.07.15
18:49
(129) Типа того :))
По плану, я так понимаю, следующие мероприятия:
— Подключить SignalR.dll хотя бы как COM на двух компах.
Кстати, вообще не понял, как это сделать.
Зарегить regsvr32 получилось.
А вот как создать COM-объект непонятно.
— Разобраться, как там подключаться на прослушку.
— Разобраться, как там слать сообщения.
— Разобраться, нужен ли мне в моей схеме сервер и зачем.
— Обернуть в итоге для кошерности SignalR.dll в Native API 1C.
131 H A D G E H O G s
 
12.07.15
18:53
Как сообщения будешь обрабатывать в 1С?
Или ты тупо всю архитектуру засунешь в ВК?
132 PR третий
 
12.07.15
18:58
(131) Так буду ловить события от компоненты и по событию уже лазить на сервер 1С за данными.
То есть мне от компоненты-то нужно _только_ одно, событие, что че-то случилось, надо бы слазить на сервер 1С, проверить.

Ну конечно же при том, что такие события должны иметь возможность генериться гибко по заданному отбору как по метаданным и отбору так и вообще по произвольному программному коду.
То есть к примеру я подписываюсь только на сообщения в чат от Васи.
Или только на событие "Кто-то провел расходную накладную".
Или только на событие "Кто-то провел расходную накладную по организации ООО Березка".
Но это уже пофиг, это вотчина 1С, здесь все понятно.
133 Serginio1
 
12.07.15
19:08
(132) Смотри 119 там все есть.
Сервер тебе нужен. Ты через него сообщения и отправляешь.
В 1С есть доступ к событиям через ДобавитьОбработчик.
Есть поле HTML с которым ты можешь работать.
Ты все можешь решить на сервере куда как и зачем. Удачи.
134 PR третий
 
12.07.15
19:11
(133) Да, спасибо.
Пока я в принципе с грехом пополам вроде схему понял.
Кроме одного.
Нахрена мне сервер? Что есть на сервере, чего нет на клиенте? Если список клиентов или сами данные, то у меня это на моем обычном сервере 1С, который никак не сервер SignalR.
135 Serginio1
 
12.07.15
19:15
(134) Тогда работай напрямую по Tcp/IP в 119 есть пример. Все в твоих руках.
136 PR третий
 
13.07.15
17:22
Выяснил сегодня, что если браузер не брать в расчет, то никаких SignalR не нужно, нужны винсокеты.
137 sapphire
 
13.07.15
17:31
Странно, а чего нет использовать, грубо, форму и оповещать другие сеансы?
138 Serginio1
 
13.07.15
17:35
(136) SignalR поддерживает винсокеты и проще
139 Serginio1
 
13.07.15
17:37
А ссылку на Вэб соккеты я тебе давал в 27. Все в твоих руках
140 Oftan_Idy
 
13.07.15
18:00
(0) А нафига?

А нафига?
141 Serginio1
 
13.07.15
18:08
138 читать как SignalR поддерживает Вэб соккеты
Для упрощения работы можешь использовать Duplex WCF Service

http://www.codeproject.com/Articles/596287/Broadcasting-Events-with-a-Duplex-WCF-Service
142 Garykom
 
гуру
13.07.15
20:03
143 Serginio1
 
14.07.15
15:08
141 Кстати если интересно то WCF Duplex Bi-directional Streaming with WebSocket Transport

http://blogs.msdn.com/b/webdev/archive/2012/09/26/wcf-duplex-bi-directional-streaming-with-websocket-transport.aspx
Основная теорема систематики: Новые системы плодят новые проблемы.