Так что в основном у меня есть приложение для обмена электронными сообщениями, которое подключается к серверу. Когда вы отправляете сообщение из приложения, сервер подхватывает его и отправляет каждому другому подключенному клиенту. Теперь, чтобы проверить это, мне нужно как минимум открыть два приложения для обмена сообщениями, чтобы увидеть, получает ли его другой клиент, но, похоже, он работает неправильно. Один из них медленнее и совсем не работает, как другой. Для более быстрой разработки я сделал так, чтобы приложение автоматически входило в систему при запуске, но во втором случае оно не входило автоматически, даже если у меня открыты обе PowerShell в одном и том же каталоге. Второй загружается дольше, на старте - длинный белый экран, загрузка занимает несколько секунд.
![Long White Screen at the Start for about 5 seconds](https://i.stack.imgur.com/Z66c0.png)
Я попытался скопировать файлы моего проекта в другой каталог и запустить там PowerShell и еще один в исходном месте, но они дают тот же результат, как если бы они оба были в одном каталоге.
Я ожидал, что оба экземпляра моего мессенджера будут открываться как один другого, но один всегда кажется медленнее и загружается неправильно
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);
});
});