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

Странно, почему до сих пор никто не сделал в 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
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
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.