Как правило, вам лучше поддерживать соединения как можно дольше.Если у вас есть каждое устройство, открывающее соединение каждый раз, когда оно отправляет сообщение, вы можете эффективно выполнить DoS'-работу с сервером, поскольку в результате у него будет множество сокетов в состоянии TIME_WAIT, занимающих место в его таблицах.
Я работал в системе, где группа клиентов общалась с сервером, и хотя их можно было регулярно включать и выключать, было все же лучше поддерживать соединение (и восстанавливать его, когда оно былоупал и новое сообщение необходимо было отправить).Возможно, вам в конечном итоге понадобится написать немного более сложный код, но я считаю, что он стоит усилий для уменьшения нагрузки на сервер.
Современные операционные системы могут иметь большие буферы, чем те, которые я на самом делестолкнулся с эффектом DoS, но, по сути, не самая лучшая идея - использовать множество подобных соединений.
На клиентской стороне все может быть довольно сложно, особенно когда устройство имеет тенденцию прозрачно переходить в спящий режим.приложение, потому что это означает, что время соединения истекает, пока приложение думает, что они все еще открыты.Когда мы сделали это, мы получили довольно сложный сетевой код, потому что нам нужно было учитывать тот факт, что сокеты могут (и будут) выходить из строя, как само собой разумеющееся, и нам просто нужно было установить новое соединение и повторить попытку отправки сообщения.,Вы просто убираете этот код в свои библиотеки и забываете о нем, как только он это сделает.
На самом деле на практике наше первоначальное приложение имело еще более сложный код, потому что он имел дело с сетевой библиотекой, которая была полуосознаваемой.из-за того, что устройства были остановлены и пытались повторно отправить сообщения о сбое, что иногда означало, что одно и то же сообщение было отправлено дважды.Мы закончили тем, что сделали дополнительный уровень связи сверху, чтобы гарантировать, что дубликаты были отклонены.Если вы используете C # или обычные сокеты в стиле BSD, у вас не должно быть этой проблемы, хотя я предполагаю.Это была проприетарная библиотека, которая управляла переподключениями, но вызывала головные боли при повторных отправках, и это неуместное время ожидания по умолчанию.