On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



ссылка на сообщение  Отправлено: 11.04.19 09:36. Заголовок: C# и Websocket. Нужна помощь.


В C# пока полный 0, но изучать надо...
Решил написать модуль для управления LG телевизора, работающий на Webos.
Коммуникация ТВ осуществляется по Websocket на порт 3000. В библиотеках SIMPL# есть класс WebSocketClient, но мне показалось он несколько скуднее на методы, чем такой-же клас в библиотеках .NET. Ну да ладно, как я понимаю, сторонние библиотеки не прокатят и нужно пользоваться только теми, что описаны в SIMPL# (ну, кроме System, видимо).
Написал клиентскую часть, соединение с сервером, получение клиентского ключа, сохранение ключа в файле, реализовал несколько команд управления. Работает! громкостью управляет, это уже хорошо, можно развивать дальше, но оказалось все не так просто.
После простоя в минуту-две (отсутствие посылок клиент-сервер) сервер перестает отвечать на запросы, при этом метот Send(...) возвращает код WEBSOCKET_CLIENT_SUCCESS. Помогает только переподключение, т.е. нужно разорвать соединение и подключиться заново.
За основу своего модуля брал простейший модуль написанный на JS, все сообщения соответствуют этому модулю. JS модуль работает в браузере без ограничения времени, поэтому предположу, что проблема не на стороне телеыизора. Но как ее найти, не понимаю...
Может нужно делать асинхронное соединение? Но как это сделать методами SIMPL# так пока и не понял.
Может кто сталкивался?
Спасибо за любую помощь!

PS.
Еще заметил, что метод Read() выполняется бесконечно долго при отсутствии ответа от сервера. Может он имеет какие либо таймауты? Но я этого не нашел.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 63 , стр: 1 2 3 4 All [только новые]





ссылка на сообщение  Отправлено: 13.06.19 14:16. Заголовок: DmitriiP пишет: а п..


DmitriiP пишет:

 цитата:
а проверить receivedata на null что мешает :)???



Да, собственно ничего не мешает, так и сделал. Сейчас проблема самоустранилась и все стабильно работает уже несколько дней, без исключений и receivedata равной null.
Остался только вопрос, откуда там взялся null и, почему это произошло. Но, думаю, мы это не узнаем. Видимо какие-то внутренние процессы забывали ссылку на массив byte[].
Тут даже проблема не в обработке исключений или проверке на null, а в том, что просто в определенный момент переставал работать метод receive, отдавая reveivedata=null. Совсем... и дальнейшая работа над модулем переставала иметь смысл )))

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 13.06.19 21:37. Заголовок: Paul_T пишет: Тут д..


Paul_T пишет:

 цитата:
Тут даже проблема не в обработке исключений или проверке на null, а в том, что просто в определенный момент переставал работать метод receive



Проблемма как раз именно в том что вы не обрабатываете исключения. null может приходить по разным причинам. но вы же не проверяете что :)

if(receive_result == WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_SUCCESS)

может быть другой статус "не зависящий от вашего кода", у которого по факту нету тела (оно null а не byte[] как при WEBSOCKET_CLIENT_SUCCESS)

Перестваал работать он из за того что контроллер ловил системную ошибку и "вешал эту функцию". try/catch не прочто так придумали....

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 13.06.19 22:28. Заголовок: DmitriiP пишет: ..


DmitriiP пишет:
[quote]`

Статус, как раз возвращался WEBSOCKET_CLIENT_SUCCESS, это и смутило...

Ваша мысль ясна, буду знать. Пока только отладкой занимаюсь и все статусы и полученные данные пишу в консоль для контроля, видел, что receive выполняется с положительным результатом, однако, да, можно проверять полученные данные на их наличие.
Обработку исключений допишу, конечно же )))

Кстати, в модуле к Denon Heos с апликейшн маркета, тоже исключения не все обработаны )

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 63 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет