无法用Electron和Socket关闭窗口

时间:2017-01-27 12:33:11

标签: javascript node.js express socket.io electron

我用NodeJS和Socket io开始了一个聊天应用项目,一切都很好。

后来我决定将我的应用程序添加到Electron框架,在一个窗口中开始聊天,但我无法关闭此窗口,退出按钮什么都不做。

在对我的代码进行一些研究以了解问题的来源之后,我删除了main.html中的socket.io.js行,然后我可以关闭我的应用程序,但是我的客户端Websocket肯定会停止工作。 / p>

<script src="/socket.io/socket.io.js"></script>

这是我的main.js中的createWindow函数。

function createWindow () {

  // Instantiate Express App
  app.server = require(__dirname + '/app/app')();

  // Create the browser window.
  win = new BrowserWindow();
  // win.maximize();

  // and load the index.html of the app.
  win.loadURL('http://localhost:'+config.server.port);
  // Open the DevTools.
  // win.webContents.openDevTools();

  win.focus();

  // Emitted when the window is closed.
  win.on('closed', () => {
    console.log("close");
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    win = null
  });
}

我的项目文件树看起来像这样

main.js // Electron, create the window load the app.js
/app/app.js // Express, all my socket function
/views/main.html // Html

请帮帮我!

1 个答案:

答案 0 :(得分:2)

erff在我的main.html中解决了我有这个功能,删除了一切OK!

  /** 
  * Alert when user leave the page
  * 
  */
  window.onbeforeunload = function (event) {
    var message = 'Sure you want to leave?';
    if (typeof event == 'undefined') {
      event = window.event;
    }
    if (event) {
      event.returnValue = message;
    }
    return message;
  }