Приложение Electron, которое использует процессы ipcMain и ipcRenderer для отправки команд telnet одним нажатием кнопки вместе с npm telnet-client библиотекой для подключения Telnet между настольным приложением и удаленным устройством (сервером).Я новичок в обещаниях, поэтому не смог разобраться в правильной реализации.
Проблема: при каждом нажатии кнопки устанавливается новый сеанс Telnet, и мое удаленное устройство перестает отвечать на запросы после двадцати одновременных сеансов.Чтобы преодолеть это, я добавил connection.end () после завершения connection.exec () в соединении Telnet, что несколько улучшает функциональность, закрывая соединение после отправки команды, но также добавляет задержку.Однако я также понял, что это не работает все время и периодически пропускает, оставляя соединение открытым.
Вопрос: как я могу проверить, установлен ли уже сеанс Telnet, и затем отправлять команды через существующий сеанс вместо создания нового сеансакаждый раз и работает за закрытием явно.
server.html
<script>
const {ipcRenderer} = require('electron')
function sendCommand(channel, arg){
ipcRenderer.send(channel, arg)
}
</script>
<button onclick="sendCommand('channel-1', 'command1');"> Command 1 </button>
<button onclick="sendCommand('channel-1', 'command2');"> Command 2 </button>
main.js
const {ipcMain} = require('electron')
var Telnet = require('telnet-client')
var connection = new Telnet()
ipcMain.on('channel-1', (event, arg) => {
var params = {
host: '192.168.1.121',
port: 23,
shellPrompt: ' ',
timeout: 1500,
}
var cmd = arg
connection.on('ready', function(prompt) {
connection.exec(cmd, function(err, response) {
console.log(response)
})
})
connection.on('timeout', function() {
console.log('socket timeout!')
connection.end()
})
connection.on('close', function() {
console.log('connection closed')
})
connection.connect(params)
})
Заранее спасибо.