#javascript #websocket
#javascript #websocket
Вопрос:
Я использую websocket для подключения к монитору в локальной сети. Я использую следующий код для подключения к IP 192.168.0.1
-адресу на порту 5000
:
const socket = new WebSocket("ws://192.168.0.1:5000", ['soap', 'xmpp']);
Это изображение пакетов, отправленных и полученных от 192.168.0.1
В первых двух у нас есть отправленный запрос и ACK
запрос для этого запроса, но WebSocket
не удается прочитать ACK
и, таким образом, приводит к a timeout error
через 4 минуты (как показано в последних трех строках).
WebSocket connection to 'ws://192.168.0.1:5000/' failed: WebSocket opening handshake timed out
Я пробовал приложение HW-group, и оно работало нормально. Вот изображение пакетов, отправленных и полученных из приложения:
(Первые три строки предназначены для отключения, а последние три — для подключения)
Я понятия не имею, почему WebSocket
это приводит к ошибке тайм-аута, а сокет из другого приложения подключается нормально. Если у кого-нибудь есть какие-либо замечания по этой ситуации, пожалуйста, дайте мне знать.
Комментарии:
1. Вы пробовали
let socket = new WebSocket(...)
? Не уверен, является лиconst
это проблемой здесь…2. Я попытался изменить его на
let socket...
, но все тот же. насколько я могу судить, он отправляет и получает пакет рукопожатия, но не регистрирует, что он получаетACK
ответ.3. Вы пробовали без спецификации протокола:
new WebSocket("ws://192.168.0.1:5000");
? Есть разница? Вы также можете протестировать свой клиент наhttps://socketsbay.com/test-websockets
4. да, даже без спецификации протокола я сталкиваюсь с той же проблемой. Я также протестировал клиент, используя предоставленную вами ссылку, и соединение было успешным.
5. Ha! Это не протокол websocket, а обычный проприетарный последовательный протокол. Используйте
py-serial
библиотеку ( pyserial.readthedocs.io/en/latest/shortintro.html ) и попытайтесь отправить требуемые байты, как определено в спецификации. Соединение с websocket инициируется http-запросом, а затем понижается до соединения с сокетом — совершенно другое!