Конфликт библиотек?

sadman41
Offline
Зарегистрирован: 19.10.2016

Просто пытаюсь понять, чем вебсокет для мелких систем выгодней обычного TCP, который уже реализован в чипе WizNet. Тем, что имеет дополнительную поддержку со стороны браузера и через прокси проходит? Дополнительный код нужно же чем-то оправдать, особенно в условиях недостатка ресурсов.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

JonHappy1 пишет:

т.е. Си зависит от железа? где об этом почитать?

Почитайте Кернигана и Ритчи.

Цитата:

слава богу , что таого в java нет :)

Между компилируемым и интерпретируемым языком должна существовать какая-то разница.

JonHappy1
Offline
Зарегистрирован: 11.06.2018

sadman41 пишет:

Просто пытаюсь понять, чем вебсокет для мелких систем выгодней обычного TCP, который уже реализован в чипе WizNet. Тем, что имеет дополнительную поддержку со стороны браузера и через прокси проходит? Дополнительный код нужно же чем-то оправдать, особенно в условиях недостатка ресурсов.

гарантированно проходит через все прокси (в том числе старые) wss.  это по инфе из инета, на практике проблем не встречал и с прохождением ws.

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

всё остальное зависит от области применения. в моём случае вместо опроса  в циклк по модбас кучи устройств - они сами присылают в своём темпе инфу. они не зависят от темпа опроса. инфа приходит только тогда когда устройство сочтет нужным. (если устройство изменяе своё состояние раз в минуту - незачем его опрашивать чаще, ловить момент изменения, оно само сообщит) соответственно логика сервера упрощается

вся система работает в реальном времени , а не в темпе опроса.

у меня сервер - корпоративный портал (сайт в обычном понимании) с системой парольной защиты на вход и прочими прибамбасами (роли, права доступа) . использование ws сильно упрощает работу всей системы. транслирование инфы с устройства клиенту-браузеру(андроиду) без проблем. клиент получает инфу в реальном времени. и при этом не нагружает сервер (что позволяет использовать более дешёвое железо сервера)
в отличии от обычного TCP, для связи с ардуинками, а ws для свяли с браузером - в моём случае - всё решено в одном ключе - меньше мороки.

если посмотреть внимательно то в доках на w5500 нет упоминания на поддержку ws. если посмотреть мой код и https://learn.javascript.ru/websockets , то всё упирается в простое формирование массива байт. первоначально отправить запрос на поддержку ws - получить ответ. и все вперёд . 6 байтов служебных вначале и далее 126 байт инфа (это для длины сообщения до 126 байт)
возможно что ив чипе WizNet можно организовать без особых затрат.
 

JonHappy1
Offline
Зарегистрирован: 11.06.2018

andriano пишет:

Между компилируемым и интерпретируемым языком должна существовать какая-то разница.

который из них интепритатор? неужели java? байткод java это не интерпритатор

каак правило у компиляторов есть настройки , и он может выдавать предупреждения и необходимости приведения типов, наподобие такого

warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

   wsclient.connect("192.168.3.4", "/lino_test/WS_server", 8080);

                                                                                                   ^

следовать или нет таким предупреждения - дело второе, но если язык позволяет, а комплятор вмешивается - и что-то сам меняет - это плохо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

JonHappy1 пишет:

каак правило у компиляторов есть настройки , и он может выдавать предупреждения и необходимости приведения типов, наподобие такого

warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

   wsclient.connect("192.168.3.4", "/lino_test/WS_server", 8080);

                                                                                                   ^

Какое это имеет отношение к рассматриваемому вопросу?

Цитата:

следовать или нет таким предупреждения - дело второе, но если язык позволяет, а комплятор вмешивается - и что-то сам меняет - это плохо.

Компилятор как раз поступает по стандарту. И предупреждений в этом случае (когда по стандарту) обычно не предусматривается. Хотя, в принципе, если кто-то сравнивает беззнаковую переменную с -1, то можно бы выдать и предупреждение.

JonHappy1
Offline
Зарегистрирован: 11.06.2018

andriano пишет:

Какое это имеет отношение к рассматриваемому вопросу?

тоже выдает предупреждение, но и только.

andriano пишет:
Компилятор как раз поступает по стандарту. И предупреждений в этом случае (когда по стандарту) обычно не предусматривается. Хотя, в принципе, если кто-то сравнивает беззнаковую переменную с -1, то можно бы выдать и предупреждение.

наверно есть настройкидля этого, в тойже Arduino IDE есть варианты вавода при компиляции.

sadman41
Offline
Зарегистрирован: 19.10.2016

JonHappy1 пишет:

гарантированно проходит через все прокси (в том числе старые) wss.  это по инфе из инета, на практике проблем не встречал и с прохождением ws.

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

Ну, в принципе ясно - если нужна поддержка браузера и реентерабельность кода - то websocket.

JonHappy1 пишет:

если посмотреть внимательно то в доках на w5500 нет упоминания на поддержку ws.

Никто этого и не заявлял, вобщем-то. Wiznet реализовал TCP/IP стек в чипе, это снимает кучу головной боли. Я хотел понять - нужно ли опять ее себе обеспечивать, натягивая Websocket поверх TCP.

JonHappy1
Offline
Зарегистрирован: 11.06.2018

sadman41 пишет:
Wiznet реализовал TCP/IP стек в чипе, это снимает кучу головной боли.

это , без условно , большой плюс

sadman41 пишет:
Я хотел понять - нужно ли опять ее себе обеспечивать, натягивая Websocket поверх TCP.
я пршёл к однозначному решению для себя , что это не головная боль, а кайф.
но тут - всё дело вкуса и имеющихся наработок,
вообще - рекомендую поробовать, лично меня не уговорить от использования ws.

 

кстати о WIZnet - https://habr.com/post/220723/

sadman41
Offline
Зарегистрирован: 19.10.2016

Я знаю за Wiznet. Даже могу назвать больное место 5500-го чипа, из-за которого они у меня в дело не пошли.

JonHappy1
Offline
Зарегистрирован: 11.06.2018

sadman41 пишет:

Я знаю за Wiznet. Даже могу назвать больное место 5500-го чипа, из-за которого они у меня в дело не пошли.

колись

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Вам это не грозит. Вот если будете входящие принимать в динамичном режиме, то столкнетесь с реджектом коннектов при занятии всех сокетов. 5100 их просто не открывает, и удаленная система ждет. С 5500 она постоянно получает отлуп.

JonHappy1
Offline
Зарегистрирован: 11.06.2018

входящие тоже будут приниматься, пока планируется только от одного источника - сервера. необходим полный дуплексный обмен.

sadman41
Offline
Зарегистрирован: 19.10.2016

Если внутри поднятого TCP-соединения будут входящие вебсокета, то это неважно. Меня проблема настигла при бомбардировке агента  сервером мониторинга. Он пытается максимально быстро работать, поэтому не смотрит, сколько сокетов уже открыто. Открывает следующий, W5500 его отбривает, сервер обижается. С 5100 попроще всё - TCP-таймаутом волна запросов размывается и равномерно заходит на ардуину.

JonHappy1
Offline
Зарегистрирован: 11.06.2018

sadman41 пишет:

 Меня проблема настигла при бомбардировке агента  сервером мониторинга. Он пытается максимально быстро работать, поэтому не смотрит, сколько сокетов уже открыто. Открывает следующий, W5500 его отбривает, сервер обижается. С 5100 попроще всё - TCP-таймаутом волна запросов размывается и равномерно заходит на ардуину.

вот сам и привёл пример для необходимости перхода на ws  :)

sadman41
Offline
Зарегистрирован: 19.10.2016

И что, для этого энтерпрайз систему еще переучивать для работы по WS? Мне данная ситуация не мешает, W5100 хватает за глаза.

JonHappy1
Offline
Зарегистрирован: 11.06.2018

sadman41 пишет:

И что, для этого энтерпрайз систему еще переучивать для работы по WS? Мне данная ситуация не мешает, W5100 хватает за глаза.

тут вопрос открытый - все упирается в стоимость.  конечно работающее трогать запрещено. но вот новое...  затраты на переход будут, но как по мне они в дальнейше окупаются многократно.
если что - могу помочь по работе с ws. работаю с ними долго , есть наработки.  я думаю и w5100 справится с ws.
full duplex - стоящая вещь