Я реализовал задачу, используя шаблон асинхронных сокетов в Silverlight 3. Я начал с реализации Михаэля Шварца и основывался на ней. Таким образом, мое приложение Silverlight устанавливает постоянное сокетное соединение с устройством, а затем данные по мере необходимости передаются между устройством и приложением Silverlight.
Одна вещь, с которой я борюсь, это как обнаружить отключение. Я мог бы подумать о 2 подходах:
Keep-Alive. Я знаю, что это можно сделать на уровне сокетов, но я не уверен, как это сделать в асинхронной модели. Как бы класс Socket дал мне знать, что произошло отключение.
Ручная поддержка. Обычно приложение Silverlight отправляет фиктивный пакет каждые 20 секунд или около того. Если это не удастся, я бы предположил отключение. Однако невероятно, что SocketAsyncEventArgs.SocketError всегда сообщает об успехе, даже если я просто отключаю устройство, к которому подключено приложение Silverlight. Я не уверен, что это ошибка или что мне нужно обновить до SL4.
Буду признателен за любые идеи, указания или реализацию.