Ответ 1
Из стандартного браузера это невозможно.
От клиента браузера socket.io
использует либо http
либо транспорт через webSocket
. И http
и webSocket
- это TCP-соединения, а не UDP-соединения. Таким образом, клиент браузера socket.io не использует UDP - он использует TCP.
Насколько я знаю, стандартная поддержка UDP в браузерах, доступная с обычной HTML-страницы Javascript, так что вы даже не можете попытаться создать свой собственный слой, который использует UDP.
Другие ссылки по теме:
Почему я не могу отправить UDP-пакеты из браузера
Чтение из порта udp в браузере
Chrome поддерживает разъемы TCP и UDP
Напишите расширение chrome для поддержки UDP в браузере
Как отправить пакет UDP с помощью Web RTC - Javascript?
Как разговаривать с сокетами UDP с HTML5?
Чтение из порта udp в браузере
UDP может быть желательным транспортом для некоторых обстоятельств, когда вы хотите, чтобы пакет был доставлен как можно скорее, но если он не может быть доставлен немедленно, просто отпустите его. Это иногда полезно для игр или даже для потоковой передачи видео, где следующий пакет будет содержать только следующее обновление, поэтому, если предыдущий не прошел, то нет ничего сложного, и вы не хотите, чтобы TCP попытался повторно передать потерянный пакет. Но браузеры не поддерживают использование протокола UDP с веб-страницы Javascript.
Если вы хотите подключиться к UDP-устройству или серверу из браузера, вам придется использовать какой-то прокси-сервер, чтобы ваш код браузера мог разговаривать с прокси-сервером через TCP (либо http, либо webSocket), а затем прокси-сервер может обрабатывать фактический UDP связь с устройством.
Можно было бы использовать библиотеку socket.io от node.js или какой-либо другой нерабочей платформы и написать свою собственную транспортную надстройку UDP для socket.io, которая построена на собственной поддержке UDP на вашей платформе. Я считаю, что socket.io имеет несколько подключаемый транспорт, поэтому вы можете попытаться сделать свой собственный транспорт, а затем сконфигурировать как клиент, так и сервер для использования этого транспорта. Это невозможно сделать в браузере, потому что в браузере нет базовой поддержки UDP, в которую вы могли бы построить свой транспорт, но в не-браузерах, таких как node.js, вы могли бы это сделать.