Не удается получить данные сокета, отправленные с клиента 1 на сервер и обратно клиенту 2

#javascript #node.js #express #socket.io #electron

#javascript #node.js #выражать #socket.io #electron

Вопрос:

У меня возникли некоторые проблемы с использованием сокетов для подключения приложения electron к веб-сайту node (express), размещенному на heroku.

В принципе, у меня есть 2 клиента, для простоты я буду называть их учителем и учеником. Таким образом, учитель отправляет данные в express, а express должен отправить данные обратно ученику. Поскольку сокет должен быть открыт со стороны клиента, я, таким образом, отправляю ping в express от student с некоторыми фиктивными данными, чтобы подключить сокет, а затем транслирую данные из express.

То, что я пробовал

учитель и ученик находятся в одном приложении / учитель не используется, когда используется ученик, и наоборот

 function pingServer() {
  socket.emit("givebackinfo", "sendinfo");
  setTimeout(pingServer, 5);
}

ipcMain.on("serverPing:getbackinfo", function (E, item) {
  console.log(item);
  if (item == "returninfo") {
    socket.emit("givebackinfo", "sendinfo");
    // pingServer()
  } else {
    console.log("error");}
});
// receive data from express
socket.on("datareturns", (msg) => {
  console.log(msg);
  mainWindow.webContents.send("RedrawData", msg);
});
 

Проблема

В express я получаю «sendinfo», но я не могу отправить данные обратно клиенту, который их отправил

выражать

 rowDelivered = 0;

// Connection for students => sends back relevant data
io.on('connection', (socket) => {
    socket.broadcast.emit('datareturns', "returns");
    socket.on('givebackinfo', (msg) => {
        console.log(msg)
        socket.broadcast.emit('datareturns', "returns");
        // socket.emit('datareturns', "sendinfo returns")
        if (msg != "sendinfo") {
            (knex('test').where('id', '>', rowDelivered).then((data) => {
                // console.log(data);

                // console.log(rowDelivered);
                if (data.length >= 1) {
                    console.log(data)
                    socket.broadcast.emit('datareturns', data);
                } else {
                    // statement
                }
            })).then(() => {
                knex('test').max('id').then((maxId) => {
                    rowDelivered = maxId[0].max
                });
            })

        } else {
            socket.broadcast.emit("datareturns", "value wrong for redraw data");
        }
    });
});