Просто пытаюсь понять, чем вебсокет для мелких систем выгодней обычного TCP, который уже реализован в чипе WizNet. Тем, что имеет дополнительную поддержку со стороны браузера и через прокси проходит? Дополнительный код нужно же чем-то оправдать, особенно в условиях недостатка ресурсов.
Просто пытаюсь понять, чем вебсокет для мелких систем выгодней обычного TCP, который уже реализован в чипе WizNet. Тем, что имеет дополнительную поддержку со стороны браузера и через прокси проходит? Дополнительный код нужно же чем-то оправдать, особенно в условиях недостатка ресурсов.
гарантированно проходит через все прокси (в том числе старые) wss. это по инфе из инета, на практике проблем не встречал и с прохождением ws.
как одно из основных, можно считать - поддержка браузеров.
все клиенты для сервера ws одинаковы - (уже писал ранее)
нагрузка на сервер уменьшается на порядки.
трафик в разы
полный дуплекс
всё остальное зависит от области применения. в моём случае вместо опроса в циклк по модбас кучи устройств - они сами присылают в своём темпе инфу. они не зависят от темпа опроса. инфа приходит только тогда когда устройство сочтет нужным. (если устройство изменяе своё состояние раз в минуту - незачем его опрашивать чаще, ловить момент изменения, оно само сообщит) соответственно логика сервера упрощается
вся система работает в реальном времени , а не в темпе опроса.
у меня сервер - корпоративный портал (сайт в обычном понимании) с системой парольной защиты на вход и прочими прибамбасами (роли, права доступа) . использование ws сильно упрощает работу всей системы. транслирование инфы с устройства клиенту-браузеру(андроиду) без проблем. клиент получает инфу в реальном времени. и при этом не нагружает сервер (что позволяет использовать более дешёвое железо сервера)
в отличии от обычного TCP, для связи с ардуинками, а ws для свяли с браузером - в моём случае - всё решено в одном ключе - меньше мороки.
если посмотреть внимательно то в доках на w5500 нет упоминания на поддержку ws. если посмотреть мой код и https://learn.javascript.ru/websockets , то всё упирается в простое формирование массива байт. первоначально отправить запрос на поддержку ws - получить ответ. и все вперёд . 6 байтов служебных вначале и далее 126 байт инфа (это для длины сообщения до 126 байт)
возможно что ив чипе WizNet можно организовать без особых затрат.
Какое это имеет отношение к рассматриваемому вопросу?
Цитата:
следовать или нет таким предупреждения - дело второе, но если язык позволяет, а комплятор вмешивается - и что-то сам меняет - это плохо.
Компилятор как раз поступает по стандарту. И предупреждений в этом случае (когда по стандарту) обычно не предусматривается. Хотя, в принципе, если кто-то сравнивает беззнаковую переменную с -1, то можно бы выдать и предупреждение.
Какое это имеет отношение к рассматриваемому вопросу?
тоже выдает предупреждение, но и только.
andriano пишет:
Компилятор как раз поступает по стандарту. И предупреждений в этом случае (когда по стандарту) обычно не предусматривается. Хотя, в принципе, если кто-то сравнивает беззнаковую переменную с -1, то можно бы выдать и предупреждение.
наверно есть настройкидля этого, в тойже Arduino IDE есть варианты вавода при компиляции.
гарантированно проходит через все прокси (в том числе старые) wss. это по инфе из инета, на практике проблем не встречал и с прохождением ws.
как одно из основных, можно считать - поддержка браузеров.
все клиенты для сервера ws одинаковы - (уже писал ранее)
нагрузка на сервер уменьшается на порядки.
трафик в разы
полный дуплекс
Ну, в принципе ясно - если нужна поддержка браузера и реентерабельность кода - то websocket.
JonHappy1 пишет:
если посмотреть внимательно то в доках на w5500 нет упоминания на поддержку ws.
Никто этого и не заявлял, вобщем-то. Wiznet реализовал TCP/IP стек в чипе, это снимает кучу головной боли. Я хотел понять - нужно ли опять ее себе обеспечивать, натягивая Websocket поверх TCP.
Wiznet реализовал TCP/IP стек в чипе, это снимает кучу головной боли.
это , без условно , большой плюс
sadman41 пишет:
Я хотел понять - нужно ли опять ее себе обеспечивать, натягивая Websocket поверх TCP.
я пршёл к однозначному решению для себя , что это не головная боль, а кайф.
но тут - всё дело вкуса и имеющихся наработок,
вообще - рекомендую поробовать, лично меня не уговорить от использования ws.
Вам это не грозит. Вот если будете входящие принимать в динамичном режиме, то столкнетесь с реджектом коннектов при занятии всех сокетов. 5100 их просто не открывает, и удаленная система ждет. С 5500 она постоянно получает отлуп.
Если внутри поднятого TCP-соединения будут входящие вебсокета, то это неважно. Меня проблема настигла при бомбардировке агента сервером мониторинга. Он пытается максимально быстро работать, поэтому не смотрит, сколько сокетов уже открыто. Открывает следующий, W5500 его отбривает, сервер обижается. С 5100 попроще всё - TCP-таймаутом волна запросов размывается и равномерно заходит на ардуину.
Меня проблема настигла при бомбардировке агента сервером мониторинга. Он пытается максимально быстро работать, поэтому не смотрит, сколько сокетов уже открыто. Открывает следующий, W5500 его отбривает, сервер обижается. С 5100 попроще всё - TCP-таймаутом волна запросов размывается и равномерно заходит на ардуину.
вот сам и привёл пример для необходимости перхода на ws :)
И что, для этого энтерпрайз систему еще переучивать для работы по WS? Мне данная ситуация не мешает, W5100 хватает за глаза.
тут вопрос открытый - все упирается в стоимость. конечно работающее трогать запрещено. но вот новое... затраты на переход будут, но как по мне они в дальнейше окупаются многократно.
если что - могу помочь по работе с ws. работаю с ними долго , есть наработки. я думаю и w5100 справится с ws.
full duplex - стоящая вещь
Просто пытаюсь понять, чем вебсокет для мелких систем выгодней обычного TCP, который уже реализован в чипе WizNet. Тем, что имеет дополнительную поддержку со стороны браузера и через прокси проходит? Дополнительный код нужно же чем-то оправдать, особенно в условиях недостатка ресурсов.
т.е. Си зависит от железа? где об этом почитать?
Почитайте Кернигана и Ритчи.
слава богу , что таого в java нет :)
Просто пытаюсь понять, чем вебсокет для мелких систем выгодней обычного TCP, который уже реализован в чипе WizNet. Тем, что имеет дополнительную поддержку со стороны браузера и через прокси проходит? Дополнительный код нужно же чем-то оправдать, особенно в условиях недостатка ресурсов.
как одно из основных, можно считать - поддержка браузеров.
все клиенты для сервера ws одинаковы - (уже писал ранее)
нагрузка на сервер уменьшается на порядки.
трафик в разы
полный дуплекс
всё остальное зависит от области применения. в моём случае вместо опроса в циклк по модбас кучи устройств - они сами присылают в своём темпе инфу. они не зависят от темпа опроса. инфа приходит только тогда когда устройство сочтет нужным. (если устройство изменяе своё состояние раз в минуту - незачем его опрашивать чаще, ловить момент изменения, оно само сообщит) соответственно логика сервера упрощается
вся система работает в реальном времени , а не в темпе опроса.
у меня сервер - корпоративный портал (сайт в обычном понимании) с системой парольной защиты на вход и прочими прибамбасами (роли, права доступа) . использование ws сильно упрощает работу всей системы. транслирование инфы с устройства клиенту-браузеру(андроиду) без проблем. клиент получает инфу в реальном времени. и при этом не нагружает сервер (что позволяет использовать более дешёвое железо сервера)
в отличии от обычного TCP, для связи с ардуинками, а ws для свяли с браузером - в моём случае - всё решено в одном ключе - меньше мороки.
если посмотреть внимательно то в доках на w5500 нет упоминания на поддержку ws. если посмотреть мой код и https://learn.javascript.ru/websockets , то всё упирается в простое формирование массива байт. первоначально отправить запрос на поддержку ws - получить ответ. и все вперёд . 6 байтов служебных вначале и далее 126 байт инфа (это для длины сообщения до 126 байт)
возможно что ив чипе WizNet можно организовать без особых затрат.
Между компилируемым и интерпретируемым языком должна существовать какая-то разница.
каак правило у компиляторов есть настройки , и он может выдавать предупреждения и необходимости приведения типов, наподобие такого
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
wsclient.connect("192.168.3.4", "/lino_test/WS_server", 8080);
^
следовать или нет таким предупреждения - дело второе, но если язык позволяет, а комплятор вмешивается - и что-то сам меняет - это плохо.
каак правило у компиляторов есть настройки , и он может выдавать предупреждения и необходимости приведения типов, наподобие такого
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
wsclient.connect("192.168.3.4", "/lino_test/WS_server", 8080);
^
Какое это имеет отношение к рассматриваемому вопросу?
следовать или нет таким предупреждения - дело второе, но если язык позволяет, а комплятор вмешивается - и что-то сам меняет - это плохо.
Компилятор как раз поступает по стандарту. И предупреждений в этом случае (когда по стандарту) обычно не предусматривается. Хотя, в принципе, если кто-то сравнивает беззнаковую переменную с -1, то можно бы выдать и предупреждение.
Какое это имеет отношение к рассматриваемому вопросу?
тоже выдает предупреждение, но и только.
наверно есть настройкидля этого, в тойже Arduino IDE есть варианты вавода при компиляции.
гарантированно проходит через все прокси (в том числе старые) wss. это по инфе из инета, на практике проблем не встречал и с прохождением ws.
как одно из основных, можно считать - поддержка браузеров.
все клиенты для сервера ws одинаковы - (уже писал ранее)
нагрузка на сервер уменьшается на порядки.
трафик в разы
полный дуплекс
Ну, в принципе ясно - если нужна поддержка браузера и реентерабельность кода - то websocket.
если посмотреть внимательно то в доках на w5500 нет упоминания на поддержку ws.
Никто этого и не заявлял, вобщем-то. Wiznet реализовал TCP/IP стек в чипе, это снимает кучу головной боли. Я хотел понять - нужно ли опять ее себе обеспечивать, натягивая Websocket поверх TCP.
это , без условно , большой плюс
но тут - всё дело вкуса и имеющихся наработок,
вообще - рекомендую поробовать, лично меня не уговорить от использования ws.
кстати о WIZnet - https://habr.com/post/220723/
Я знаю за Wiznet. Даже могу назвать больное место 5500-го чипа, из-за которого они у меня в дело не пошли.
Я знаю за Wiznet. Даже могу назвать больное место 5500-го чипа, из-за которого они у меня в дело не пошли.
Вам это не грозит. Вот если будете входящие принимать в динамичном режиме, то столкнетесь с реджектом коннектов при занятии всех сокетов. 5100 их просто не открывает, и удаленная система ждет. С 5500 она постоянно получает отлуп.
входящие тоже будут приниматься, пока планируется только от одного источника - сервера. необходим полный дуплексный обмен.
Если внутри поднятого TCP-соединения будут входящие вебсокета, то это неважно. Меня проблема настигла при бомбардировке агента сервером мониторинга. Он пытается максимально быстро работать, поэтому не смотрит, сколько сокетов уже открыто. Открывает следующий, W5500 его отбривает, сервер обижается. С 5100 попроще всё - TCP-таймаутом волна запросов размывается и равномерно заходит на ардуину.
Меня проблема настигла при бомбардировке агента сервером мониторинга. Он пытается максимально быстро работать, поэтому не смотрит, сколько сокетов уже открыто. Открывает следующий, W5500 его отбривает, сервер обижается. С 5100 попроще всё - TCP-таймаутом волна запросов размывается и равномерно заходит на ардуину.
И что, для этого энтерпрайз систему еще переучивать для работы по WS? Мне данная ситуация не мешает, W5100 хватает за глаза.
И что, для этого энтерпрайз систему еще переучивать для работы по WS? Мне данная ситуация не мешает, W5100 хватает за глаза.
если что - могу помочь по работе с ws. работаю с ними долго , есть наработки. я думаю и w5100 справится с ws.
full duplex - стоящая вещь