170 похожих чатов

Всем привет. Достался проект по наследству если кратко, проект на

Net6 mvc, развернут с статическом ip адресе и порту,
который слушает определённый порт

есть физические устройства, которые шлют на бэк пакеты с информацией об устройстве.
С проекта также есть возможность управлять этими устройствами.

на текущий момент:
на бэке прописан ListenAnyIP(номер порта, _o => _o.UseConnectionHandler<HandlerConnnection>());
в котором слушается нужный порт и через
UseConnectionHandler в HandlerConnnection попадает контекст соединения.


пакеты принимаются, клиенты добавляются в ConcurrentDictionary<string, ConnectionContext>. - далее записывается инфа в БД итд итп, это не суть...


Проблема:
нужно реализовать постоянное соединение с устройствами, для того чтобы устройства постоянно
оставались на связи, можно было управлять ими с фронта mvc не теряв соединение с ними
( конечно без объективных причин) и тут проблема - контекст меняется, связь теряется...

устройств может быть в рабочей схеме 500 и более

Как думаете для такой связки, что лучше использовать?
можно ли использовать например HostedService c Worker' ом, а в него запихнуть tcplistener /sockets ?

Буду рад любой инфе, ссылку на git с примером, куда угодно

Если кто-то готов поучаствовать, готов оплатить участие за разумные деньги.

3 ответов

5 просмотров

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

Kicimor
я не оч понимаю а нельзя условно просто слушать со...

там скорее всего какойто iot и тупые железяки которые умеют держать только tcp соединение и не знают ни про какие вебсокеты и signalr

я пока не понял проблемы, есть условно события - accept соединения или его обрыв, по этим двум штукам добавляется/удаляется твой девайс в твой concurrentDictionary

Похожие вопросы

Обсуждают сегодня

Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
было так ;void set_http_ver(RESPD* ptr, char* version, uint32_t length) // example: 'RTSP/1.1 ' set_http_ver: mov eax, [esp + 4] mov ecx, [esp + 8] ...
Mixail Frolov
5
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Evo 1.4.34 PHP 7.4 Все работало штатно. На ровном месте SimpleGallery начал выдавать ошибку Что может быть? Уже все переустановил по новой. Места хватает. Хостинг reg.ru
Paul Savchenkov
6
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
юзеры Jetpack Compose тут?
Qtless Qtless
8
Карта сайта