win.webContents.send не получен при отправке внутри socket.emit - PullRequest
0 голосов
/ 04 мая 2019

Я запускаю Vue внутри Electron и подключаю его к серверу Node (Express) с помощью Socket.io.

Когда клиент подключается к серверу, запрос данных отправляется и возвращается через обратный вызовфункция.Внутри функции обратного вызова я пытаюсь отправить данные через IPC Electron, используя win.webContents.send, но они не получены в соответствующем ipcRenderer.on.

У меня есть другой win.webContents.send вне сокета.emit (внутри 'did-finish-load') и он получен ipcRenderer, поэтому я подозреваю, что он как-то связан с асинхронностью ..?Куда я иду не так?

Electron.js

const { app, BrowserWindow, Menu } = require('electron')
var io = require('socket.io-client')

...

let win

function createWindow () {
    win = new BrowserWindow({ width: 800, height: 600 })

    win.loadFile('dist/index.html')

    //win.webContents.openDevTools()

    win.on('closed', () => {
        win = null
    })

    win.on('ready-to-show', () => {
        win.maximize();
      });

    win.webContents.on('did-finish-load', () => {
        win.webContents.send('DATA', 'test'); // This works
    });

}

...

var socket = io.connect('http://127.0.0.1:3000', {
  reconnectionDelay: 100
});

socket.on('connect', () => {
  console.log('Connected');

  socket.emit('GET_DATA', function(response) {
    console.log('Received:');
    console.log(response);
    win.webContents.send('DATA', response); //This doesn't seem to work...
  });
});

main.js Vue

const { ipcRenderer } = window.require('electron');

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

ipcRenderer.on('selectView', (e, arg) => {
...
});

ipcRenderer.on('DATA', (e, arg) => {
  console.log('THIS IS NOT SHOWING UP WHEN SENT INSIDE SOCKET.EMIT');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...