所以基本上我有一个连接到服务器的电子通讯应用程序。当您从应用发送消息时,服务器会在该消息上接听并将其发送给每个其他已连接的客户端。现在进行测试,我至少需要打开我的Messenger应用程序中的两个,看看其他客户端是否收到了它,但是它似乎无法正常工作。其中一个较慢,根本不像另一个。为了加快开发速度,我做到了使应用程序在启动时自动登录,但在第二种情况下,即使我在同一目录中同时打开了两个Powershell,它也不会自动登录。第二个需要更长的时间加载,开始时会有一个较长的白屏,需要几秒钟的加载时间。
我尝试将项目文件复制到另一个目录中,并在其中启动一个powershell,然后在原始位置中启动另一个,但它们产生的结果就像它们都在同一目录中一样。
我希望我的Messenger的两个实例能够彼此打开,但是似乎总是比较慢并且加载不正确
main.js
// Variables //
var electron = require("electron");
var url = require("url");
var path = require("path");
var electronLocalshortcut = require("electron-localshortcut");
var app = electron.app;
var BrowserWindow = electron.BrowserWindow;
var Menu = electron.Menu;
var ipcMain = electron.ipcMain;
var autoUpdater = require("electron-updater").autoUpdater;
var mainWindow;
var devMode = true;
var crypto = require('crypto');
// Listen for the App Ready //
app.on("ready", function () {
// Create New Window 603 x 424//
mainWindow = new BrowserWindow({
frame: false,
icon: path.join(__dirname, "vimlogo.png"),
width: 700,
height: 700,
center: true
});
// Load HTML into the Window //
mainWindow.loadURL(
url.format({
pathname: path.join(__dirname, "index.html"),
protocol: "file:",
slashes: true
})
);
mainWindow.webContents.on('did-finish-load', function () {
if (devMode) {
mainWindow.webContents.send('update-not-available');
mainWindow.webContents.send('autologin');
}
});
if (!devMode) {
autoUpdater.checkForUpdates();
}
winsize = mainWindow.getPosition();
// Clear Menu //
var mainMenu = null;
Menu.setApplicationMenu(mainMenu);
ipcMain.on("maximize", function (e) {
if (!mainWindow.isMaximized()) {
winpos = mainWindow.getPosition();
winsize = mainWindow.getSize();
mainWindow.maximize();
}
});
ipcMain.on("publicKey", function (e, data) {
var publicKey = data.publicKey;
var key = data.key;
var keyString = crypto.publicEncrypt(publicKey, new Buffer.from('key')).toString("base64");
key = crypto.publicEncrypt(publicKey, new Buffer.from(key)).toString("base64");
mainWindow.webContents.send('publicKeyEncrypted', {
keyString: keyString,
key: key
});
});
electronLocalshortcut.register(mainWindow, "Ctrl+R", function () {
mainWindow.reload();
});
electronLocalshortcut.register(mainWindow, "Ctrl+Q", function () {
mainWindow = null;
app.quit();
});
electronLocalshortcut.register(mainWindow, "Ctrl+Shift+I", function () {
mainWindow.webContents.openDevTools();
});
autoUpdater.on('update-available', function () {
console.log('Update Available');
mainWindow.webContents.send('update-available');
});
autoUpdater.on('update-not-available', function () {
console.log('Update Not Available');
mainWindow.webContents.send('update-not-available');
});
autoUpdater.on('download-progress', function (progressObj) {
mainWindow.webContents.send('download-progress', progressObj);
});
autoUpdater.on("update-downloaded", function (info) {
autoUpdater.quitAndInstall();
});
autoUpdater.on('error', function (message) {
console.error('There was a problem updating the application');
console.error(message);
});
});