Мне нужно поддерживать соединение между сервером и несколькими клиентами, чтобы клиенты могли отправлять команды, а сервер запускал события. Сервер в основном представляет собой музыкальный проигрыватель, и клиенты отправляют такие команды, как «Play()», «Pause()», «GetPlaylists()» и т. д. Сервер на его стороне должен иметь возможность сообщать клиентам такие вещи, как «SongEnded» или «PlayerPaused». Кроме того, должна быть возможность отправлять некоторые данные туда и обратно (например, текущую песню, изображение альбома, списки воспроизведения и т. д.). Я мог бы, конечно, пойти дальше и создать сокет самостоятельно и создать свой собственный протокол для обработки всех вышеперечисленных сценариев, но есть вероятность, что кто-то уже сделал это до меня, поэтому я действительно хочу создать фреймворк для работы в реальном времени. связь между сервером и клиентом для .NET. Например, я просмотрел xml-rpc, но не уверен, как мне с этим справиться с «OnClientSend». Кроме того, если я не ошибаюсь, xml-rpc сделан в стиле REST. Я также смотрел на wcf, но, поскольку у меня нет опыта работы с ним, я не знаю, с чего начать и как разместить сервер в простом консольном приложении.
Важно. Клиент должен иметь возможность не быть .NET.
Важно: должна быть возможность подключения к Java (Android).
< strong>Важно! Основными платформами являются Windows (сервер и клиент) и Android (клиент).
Важно! Потоковая передача звука не производится. Тем не менее, изображения должны быть отправлены.
Любые идеи для решения будут оценены. Кроме того, если у вас есть ссылки на хороший фреймворк или описания того, как использовать компоненты, уже существующие внутри .NET, я был бы очень рад.
[Edit] Проблема в том, что при отправке данных через сокеты нет гарантии (совсем!), что отправленные вами пакеты будут прочитаны сервером одновременно. Я могу отправить 50, затем 100, затем снова 50 байт, но сервер может прочитать это как 200-байтовый фрагмент или сначала 100, затем 100 и т. проблема), что я получил целое сообщение (и ничего больше).