|
Чат на сокетах | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
PR третий
11.07.15
✎
02:04
|
Странно, почему до сих пор никто не сделал в 1С чат на сокетах? Без нагрузки на 1С, по-человечески.
|
||||||||||
1
Сниф
11.07.15
✎
02:15
|
Чат на сокетах именно не делал.
Наверное, это интересно, подпишусь. Делал доступ из 1С через telnet ("mswinsock.winsock") к FireFox-браузеру. |
||||||||||
2
rphosts
11.07.15
✎
04:34
|
Делал как-то для себя и сотоварищей (требовалось для стационарников и мобильных чтоб)... но в общем не особо взлетело м потом и померло постепенно. ХЗ что там у вас за сокеты - делал обмен через веб (т.е. нужен "сервер" с 1С - файловой достаточно и апачем, на сервер околонулевая нагрузка).
Сделали, ты просто не знаешь. Например, вот... |
||||||||||
3
rphosts
11.07.15
✎
04:35
|
Когда сделал понял что второй ватсап/телеграф никому не будет нужен
А нафига? |
||||||||||
4
Web00001
11.07.15
✎
05:18
|
Без нагрузки на 1С, не используй 1С.
А нафига? |
||||||||||
5
Индиго
11.07.15
✎
06:54
|
чаты умерли в 2003 примерно.Некромантия- это нехорошо:)
|
||||||||||
6
Индиго
11.07.15
✎
06:54
|
.
А нафига? |
||||||||||
7
Casey1984
11.07.15
✎
06:57
|
Не та целевая аудитория.
А нафига? |
||||||||||
8
Сниф
11.07.15
✎
07:01
|
Кстати, что хотел сказать автор? "Чат в 1С, но без нагрузки на 1С"?
|
||||||||||
9
Сниф
11.07.15
✎
07:03
|
и что он имел ввиду "по-человечески"
видимо, можно еще по-звериному, но это автору не подходит |
||||||||||
10
Индиго
11.07.15
✎
07:04
|
(8)Если кто-то чат построит на скуле- я первый сниму шляпу.
|
||||||||||
11
Сниф
11.07.15
✎
07:08
|
(10)а если на MySql - так в шляпе и будешь?)
|
||||||||||
12
Индиго
11.07.15
✎
07:33
|
(11)Скуль он и в Африке скуль.Тоже симу:)
|
||||||||||
13
Garykom
гуру
11.07.15
✎
10:50
|
как бы когда то делал "чат" в 1С77 с помощью "netainet.dll" для обмена "сообщениями" - данными между ТиС и прогой на C# на ТСД (под WinCE)
|
||||||||||
14
DGorgoN
11.07.15
✎
11:43
|
Да вроде как в 8-ке куча способов сделать и без сокетов. В 1с 7.7 тоже вроде не сильно систему нагружала обработка ожидания.
Сокеты тоже между прочим кушают ресурсы ПК, просто меньше чем 1с. А нафига? |
||||||||||
15
DGorgoN
11.07.15
✎
11:44
|
Да и вроде как делали. Было что-то подобное аж лет 10 назад!
|
||||||||||
16
PR третий
11.07.15
✎
14:04
|
(5) Чат - это как пример применения. Область применения не только чат.
|
||||||||||
17
PR третий
11.07.15
✎
14:07
|
(8) Хотел сказать, что без постоянных запросов базы, изменилось что-то или нет.
То есть без обработчика, который раз в сколько-то секунд проверяет запросом к серверу, поменялось что-то или нет. Но при этом с моментальной реакцией, как в том же скайпе например. |
||||||||||
18
PR третий
11.07.15
✎
14:09
|
(14) Скажи хоть один нормальный с моментальным обменом сообщениями.
|
||||||||||
19
Serginio1
11.07.15
✎
14:10
|
|||||||||||
20
PR третий
11.07.15
✎
14:10
|
(15) Вроде как говорят в Москве кур доят
|
||||||||||
21
Serginio1
11.07.15
✎
14:11
|
19+
Сделали, ты просто не знаешь. Например, вот... |
||||||||||
22
PR третий
11.07.15
✎
14:15
|
(19) О, интересно, почитаю
|
||||||||||
23
rphosts
11.07.15
✎
14:24
|
(18) хранить время последнего сообщение в памяти как и массив из 10/100/1000/... последних сообщений (в том-же фиксированном массиве) в чем проблема-то?
|
||||||||||
24
PR третий
11.07.15
✎
14:43
|
(23) В какой памяти? Чьей? События-то о новых сообщениях кто будет генерить?
|
||||||||||
25
rphosts
11.07.15
✎
14:49
|
(24) памяти приложения 1с, константа не годится? У окон вроде нет механизма оповещени извне в отличии от зелёного робота и покусаного яблока, поэтому клиентам из под самим придётся опрашивать сервер, а для мобильной можно и оповещения прикрутить
|
||||||||||
26
PR третий
11.07.15
✎
14:51
|
(25) Как бэ вся ветка про то, что как бы избавить от постоянного опроса базы 1С на предмет, ничего ли не поменялось.
И после этого ты предлагаешь именно это? |
||||||||||
27
Serginio1
11.07.15
✎
14:58
|
|||||||||||
28
Serginio1
11.07.15
✎
14:59
|
Транспорт передачи данных
Для обмена данными между клиентом и сервером SignalR использует тот способ передачи или тот транспорт, который наиболее подходит к данной ситуации. Однако разработчики могут переопределить способ передачи. SignalR предоставляет следующие типы технологий для взаимодействия сервера и клиента: WebSockets Server-sent events Forever Frames Long polling Выбор транспорта При создании подключения SignalR выбирает, если доступно, технологию WebSocket, так как это наиболее оптимальная технология для SignalR, наиболее эффективно использующая память сервера. В то же время WebSocket может использоваться только на серверах под управлением Windows Server 2012 или Windows 8 и при наличии установленного .NET Framework 4.5. При этом также технология WebSocket должна поддерживаться и браузером клиента. И если технология WebSocket недоступна на сервере или клиенте, то выбирается другой транспорт. Если WebSocket, то SignalR использует технологию Server Sent Events, при ее поддержке сервером и клиентом. Если технология Server Sent Events также недоступна, то используются скрытые фреймы - Forever Frames. И если Forever Frames также недоступны, то используется Long Polling. Например, если на стороне клиента используется браузер IE 8 и ниже, то используется Long Polling. Теперь рассмотрим работу с библиотекой на конкретных примерах. |
||||||||||
29
Garykom
гуру
11.07.15
✎
15:01
|
у меня по этой ветке уже какое то тройное https://ru.wikipedia.org/wiki/Дежавю
|
||||||||||
30
Лефмихалыч
11.07.15
✎
15:04
|
Набери в гугле
Websocket chat node.js И выбирай из квадриллиона готовых. Помимо этого там будут туториалы, как самому этот велосипед сделать. Нода портбельная есть, так что ни каких врачей устанавливать не надо |
||||||||||
31
Лефмихалыч
11.07.15
✎
15:05
|
Апачей, а не врачей
|
||||||||||
32
Serginio1
11.07.15
✎
15:06
|
|||||||||||
33
Сниф
11.07.15
✎
15:08
|
Приведу кусочек рабочего кода, выдернул "как есть" из конфигурации
&НаКлиенте Функция ИнициализацияПодключения(ХостПорт = "127.0.0.1:4242") ПозДвоеточия = Найти(ХостПорт,":"); Если ПозДвоеточия = 0 Тогда СообщитьПользователю("Правильный формат хост:порт, а у вас:" + ХостПорт) ; мХостПорт = ""; Возврат Ложь; Иначе Сервер = СокрЛП(Лев(ХостПорт,ПозДвоеточия-1)); Порт = СокрЛП(Сред(ХостПорт,ПозДвоеточия+1)); КонецЕсли; Попытка WinSocket = Новый COMОбъект("mswinsock.winsock"); ДобавитьОбработчик WinSocket.Connect, WinSocketConnect; ДобавитьОбработчик WinSocket.Error, WinSocketError; ДобавитьОбработчик WinSocket.DataArrival, WinSocketDataArrival; //ДобавитьОбработчик WinSocket.ConnectionRequest, WinSocketConnectionRequest; //ДобавитьОбработчик WinSocket.SendComplete, WinSocketSendComplete; Исключение СообщитьПользователю(ОписаниеОшибки()); мХостПорт = ""; Возврат Ложь; КонецПопытки; Если WinSocket.State = 7 тогда Если WinSocket.State = 0 Тогда WinSocket.Close(); КонецЕсли; WinSocket.RemoteHost = Сервер; WinSocket.RemotePort = Порт; WinSocket.Connect(); Иначе WinSocket.Close(); WinSocket.RemoteHost = Сервер; WinSocket.RemotePort = Порт; WinSocket.Connect(); КонецЕсли; мХостПорт = ХостПорт; Возврат Истина; КонецФункции &НаКлиенте Процедура Подключиться(Команда) ПолеОтвет = ""; ИнициализацияПодключения(); КонецПроцедуры &НаКлиенте Процедура WinSocketConnect() //Сообщить("Подключение успешно"); КонецПроцедуры // () //Number - цифровой код возникшей ошибки , //Description - текстовое описание ошибки, //Scode - код ошибки в типе Long (HRESULT) SCODE //Source - описание источника ошибки, //HelpFile - ссылка на Файл справки //HelpContext - контекст файла справки //CancelDisplay - флаг отмены отображения стандартного окна об ошибке. По умолчанию значение - Истина. Окно не выводится. &НаКлиенте Процедура WinSocketError(Number, Description, Scode, Source, HelpFile, HelpContext, CancelDisplay) СообщитьПользователю(Description); КонецПроцедуры &НаКлиенте Процедура WinSocketDataArrival(bytesTotal) ТeкстСообщения = ""; WinSocket.GetData(ТeкстСообщения); стрОтвет = ANSItoUTF8(ТeкстСообщения); АнализОтвета(стрОтвет); //КонецЕсли; КонецПроцедуры |
||||||||||
34
Serginio1
11.07.15
✎
15:09
|
|||||||||||
35
rphosts
11.07.15
✎
16:38
|
(26) про кэширование слышали? Будет раз в 20 мин читать из базы... ну или реже если запись в базу будет чаще происходить.
|
||||||||||
36
PR третий
11.07.15
✎
16:39
|
у меня основная проблема-то не в том, что нет в инете примеров реализации. Примеров-то вагон.
Основная проблема в том, что я не очень-то разбираюсь в теме. Я как бы в свое время в университете эти вещи чуть затронул, но не более того. Нет общего понимания того, как что работает. Попробую своими словами по рабоче-крестьянски сформулировать свое понимание, поправьте меня, если где косякну :)) Некая вводная: Есть сервер 1С 8 на SQL, ОС винда 8. Клиенты 1С: тонкий клиент на том же компьютере, что и сервер 1С, тонкий клиент в одной ЛВС с сервером 1С, тонкий клиент через веб, веб-клиент, ну то есть весь возможный фарш. Хочется нажав в каком-либо клиенте кнопку "Сказать всем привет" сгенерить во всех клиентах (подписавшихся на получение таких событий) некое событие "Че-то произошло". При этом неприемлемо просто тупо раз в секунду или 10 секунд каждым клиентом лазить на сервер 1С и выполнять какой-то запрос к данным 1С, не произошло ли чего. Некое понимание работы компьютеров вообще и сокетов в частности: На уровне железа прилетающее в сетевую карту электричество создает некое событие, которое обрабатывается операционкой, типа "Упс, что-то там прилетело в сетевуху, можно пойти посмотреть". На уровне операционки системные прерывания, в которых как раз обрабатываюся такие события с сетевухой могут обрабатываться сущностями более высокого порядка, в нашем случае сокетами. Кроме того, есть возможность настроить постоянное подключение через сокет клиента с сервером. Опять же, возможно настроить это без слушания порта да и вообще без открытия какого-либо дополнительного порта только специально ради этого. И, если я правильно понимаю, сокету по большому счету пофиг, где сервер, в локалке или в интернете. То есть в конечном счете, я могу говорить про построение некой условной схемы "Один сервер, который все слушают и которому все шлют свои сообщения и много клиентов". Причем, если я правильно понимаю, сервер в данном случае — вещь довольно условная, в принципе с таким же успехом я могу (если знаю всех клиентов) сообщить о новом сообщении не серверу, а всем клиентам, которые уже в свою очередь по этому событию полезут в базу 1С смотреть, что там такого поменялось. Соответственно, появилось желание сделать некую компоненту, с помощью которой можно будет через сокеты асинхронно обмениваться информацией между клиентами 1С. |
||||||||||
37
rphosts
11.07.15
✎
16:41
|
(36) ёлкин дрын! Ты сколько собрался садить пользователей на чат одновременно (пиковая нагрузка)?
|
||||||||||
38
ДенисЧ
11.07.15
✎
16:41
|
Ромале.... Шёл бы ты... ИТС продавать...
|
||||||||||
39
PR третий
11.07.15
✎
16:43
|
(37) Да это не реальная задача и чат здесь лишь для затравки
|
||||||||||
40
PR третий
11.07.15
✎
16:43
|
(38) Не сцы, я первый год в 1С именно это и делал в основном :))
|
||||||||||
41
ДенисЧ
11.07.15
✎
16:45
|
(40) Вот и продолжай, судя по всему - у тебя это лучше всего получается.
|
||||||||||
42
PR третий
11.07.15
✎
16:46
|
(41) Я подумаю над вашим коммерческим предложением
|
||||||||||
43
rphosts
11.07.15
✎
16:47
|
(39) для затравки сивквел не нужен! Достаточно файловой базы и кэшируется I/O для такого простого случая ничуть не хуже и для файловой... фактически всё чтение будет в памяти и иногда дописки будут падать в базу
|
||||||||||
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |