|
Чат на сокетах | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
PR третий
11.07.15
✎
02:04
|
Странно, почему до сих пор никто не сделал в 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
|
(112) Я так понимаю, эта http://merle-amber.blogspot.ru/2012/11/real-time-aspnet-signalr.html?
|
||||||||||
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
|
|||||||||||
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |