2014-11-24 2 views
0

Так что я пытаюсь отправить TCP-сообщение на устройство, подключенное к моему компьютеру, с IP-адресом xxx.xxx.1.32 через порт 9999 с Socket.io. Клиент успешно подключается к TCP-серверу, запущенному на устройстве, но я не могу отправить ему какое-либо фактическое сообщение. Вот результат я получаю от устройства:Ошибка отправки TCP-сообщения с Socket.io

enter image description here

И мой клиентский код:

<script src = "https://cdn.socket.io/socket.io-1.2.1.js"></script> 
<script> 
    var socket = io('http://xxx.xxx.1.32:9999'); 
    socket.on('connect', function() { 
     socket.send('GPIO,00,0'); 
     socket.emit('GPIO,00,0'); 

     socket.on('message', function (msg) { 
       alert(msg); 
     }); 
    }); 
</script> 

Он периодически получает те же самые сообщения, описанные в первой картине (что имеет смысл поскольку поле Connection: установлено для поддержания работоспособности), но он никогда не отправляет сообщения даже после первого подключения. Любые идеи относительно того, что происходит не так?

ответ

2

Socket.IO не выполняет простые TCP-сокеты, поскольку это невозможно сделать в браузере. Вместо этого он использует WebSockets, для которого требуется рукопожатие, построенное поверх HTTP (или, как альтернатива, некоторые другие резервные копии на основе HTTP). Если вы хотите поговорить с вашим пользовательским устройством с помощью Socket.IO, вам придется реализовать весь свой протокол вручную.

Если вы не можете или не хотите запускать node.js на своем устройстве, лучше всего будет забыть Socket.IO и просто использовать простые WebSockets. Или даже реализовать прокси-сервер на полноценном компьютере, который может прокси-сервер через простой TCP.

+0

Gotcha, спасибо за ваш ответ. Как вы думаете, этот плагин будет работать для этого? https://github.com/kanaka/websockify – Tylerlee12

+0

Похоже на то, что сделало бы работу, предполагая, что вы можете запустить ее на своей платформе. –

Смежные вопросы