подключиться к серверу сокетов по нажатию кнопки с помощью модуля net nodejs - PullRequest
0 голосов
/ 14 сентября 2018

Я разрабатываю электронное приложение для управления реле ESP8266 через TCP. ESP8266 имеет TCP-сервер, работающий через порт 8080 в моей локальной сети. Основной код ниже работает. ESP8266 принимает соединение и команды для включения / выключения реле также работают.

const electron = require('electron')
var net = require('net');

var HOST = '192.168.0.33';
var PORT = 8080;

var socket = new net.Socket();

socket.connect(PORT, HOST, function() {
  console.log('CONNECTED TO: ' + HOST + ':' + PORT);    
});

Но теперь я хотел бы сделать это соединение "socket.connect" нажатием кнопки в моем электронном приложении, чтобы я мог изменить IP-адрес, если это необходимо, используя поле ввода. В противном случае IP-адрес жестко закодирован.

Следующий код не работает:

const electron = require('electron')    
var net = require('net');

const turnOn = new Buffer([0xA0, 0x01, 0x00, 0xA1]);
const turnOff = new Buffer([0xA0, 0x01, 0x01, 0xA2]);

var socket = new net.Socket();

const connectBtn = document.getElementById('connectBtn');
const onBtn = document.getElementById('onBtn');
const offBtn = document.getElementById('offBtn');

connectBtn.addEventListener('click', function(event) {
  console.log("clicked connect");
  var ipAddress = document.getElementById('ipAddress').value;
  var port = document.getElementById('port').value;    
  socket.connect(port, ipAddress, function() {
    console.log('CONNECTED TO: ' + ipAddress + ':' + port);    
  });
})

Другими словами. Если я помещу "socket.connect" вне события нажатия кнопки Connect, мое приложение подключается к ESP8266. Если я вставлю "socket.connect" в событие нажатия кнопки Connect, соединение не произойдет.

Есть ли другой способ изменить IP-адрес, если это необходимо во время выполнения?

Это скриншот приложения, которое я пытаюсь создать: enter image description here

1 Ответ

0 голосов
/ 01 октября 2018

Когда у Socket host ip вместо домена, у меня та же проблема.Может быть, это ошибка Электрон.Обновление до electronic3.0, и Socket.connect исправлено.

...