簡體   English   中英

如何在同一telnet連接上發送多個數據?

[英]How to send multiple pieces of data on same telnet connection?

一個電子應用程序,該應用程序使用ipcMain和ipcRenderer進程通過單擊按鈕發送telnet命令以及npm telnet- 客戶端庫,用於在桌面應用程序和遠程設備(服務器)之間進行Telnet連接。 我是新來的諾言,所以無法找出正確的實施方案。

問題:每次單擊一個按鈕,都會建立一個新的Telnet會話,並且在並發20個會話后,我的遠程設備無響應。 為了克服這個問題,我在Telnet連接上完成connection.exec()之后添加了connection.end(),它通過在發送命令后關閉連接來改善功能,但同時也增加了延遲。 但是,我也意識到這並非一直有效,並且會間歇性地跳過以保持連接狀態。

問題:如何檢查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)
})

提前致謝。

以下修改幫助我通過現有telnet通道發送命令,而無需創建多個telnet會話,現在發送telnet命令的速度很快。

var params = {
  host: '192.168.1.121',
  port: 23,
  shellPrompt: ' ',
  timeout: 1500,
  // removeEcho: 4
}
connection.connect(params)

var cmd = "a temp command"

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')
})

ipcMain.on('channel-1', (event, arg) => {

  cmd = arg

if(connection.getSocket().writable){
  connection.exec(cmd, function(err, response) {
      console.log(response)
  })
}else{
  console.log("connection closed!" + connection.getSocket().writable)
}

})

如何從 Firebase 和 append 檢索多條數據到不同的<div>做同樣的事情?</div><div id="text_translate"><p> 所以我正在制作一個頁面來顯示從表單輸入到 append 的數據到另一個使用 Firebase 的頁面。 我基本上已經設置好了,所以有一個表單使用 function 保存消息並將其查詢到 Firebase,然后我在另一個頁面上使用它進行顯示。 到目前為止,我已經制作了 1 張卡片,它工作正常,但是每當我在表格上再次輸入 append 數據時,它就會並排粘在一起,然后制作一個新的卡片容器。 以下是一些圖片:</p><p> <a href="https://i.stack.imgur.com/RiJJG.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RiJJG.png" alt="在此處輸入圖像描述"></a></p><p> 當我再次填寫表格時,結果是這樣的: <a href="https://i.stack.imgur.com/Hx2nm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Hx2nm.png" alt="在此處輸入圖像描述"></a></p><p> 如您所見,它從“Random UHC”(這是 Firebase 中的第一個事件)變為“Random UHCRandom Event”。 我一直在嘗試對其進行設置,以便單獨制作一個全新的卡片容器,而不僅僅是使用同一張卡片。 這里還有一些代碼:Form that queries inside Firebase</p><pre> var messagesRef = firebase.database().ref().child('messages'); // Listen for form submit document.getElementById('contactForm').addEventListener('submit', submitForm); // Submit form function submitForm(e){ e.preventDefault(); // Get values var name = getInputVal('name'); var company = getInputVal('eventTitle'); var email = getInputVal('date'); var phone = getInputVal('time'); var message = getInputVal('message'); // Save message saveMessage(name, company, email, phone, message); // Show alert document.querySelector('.alert').style.display = 'block'; // Hide alert after 3 seconds setTimeout(function(){ document.querySelector('.alert').style.display = 'none'; },3000); // Clear form document.getElementById('contactForm').reset(); } // Function to get get form values function getInputVal(id){ return document.getElementById(id).value; } // Save message to firebase function saveMessage(name, eventTitle, date, time, message){ var newMessageRef = messagesRef.push(); newMessageRef.set({ name: name, eventTitle:eventTitle, date:date, time:time, message:message }); }</pre><p> 我如何在新頁面上 output 它:</p><pre> rootRef.on("child_added", snap =&gt; { var name = snap.child("name").val(); var eventTitle = snap.child("eventTitle").val(); $("#eventTitle").append(eventTitle); });</pre><p> 顯示數據頁面的 HTML:</p><pre> &lt;div class="card-main"&gt; &lt;div class="card-head"&gt; &lt;img src="logo.png" alt="logo" class="card-logo"&gt; &lt;div class="product-detail"&gt; &lt;h2&gt;Upcoming Events&lt;/h2&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="card-body-1"&gt; &lt;div class="product-desc"&gt; &lt;span class="product-title"&gt; &lt;b&gt;&lt;p id = eventTitle style="width:18%; float: left;"&gt;&lt;/p&gt;&lt;/b&gt; &lt;span class="badge"&gt; New &lt;/span&gt; &lt;span class="product-caption"&gt; &lt;b&gt;July 5th, 2020 - 5:30 PM EST&lt;/b&gt; &lt;/span&gt; &lt;/span&gt;</pre><p> id 元素 eventTitle 是當前頁面上唯一顯示的內容。 您的幫助將不勝感激。</p></div>

[英]How to retrieve multiple pieces of data from Firebase and append it to different <div> that do the same thing?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 如何從 Firebase 和 append 檢索多條數據到不同的<div>做同樣的事情?</div><div id="text_translate"><p> 所以我正在制作一個頁面來顯示從表單輸入到 append 的數據到另一個使用 Firebase 的頁面。 我基本上已經設置好了,所以有一個表單使用 function 保存消息並將其查詢到 Firebase,然后我在另一個頁面上使用它進行顯示。 到目前為止,我已經制作了 1 張卡片,它工作正常,但是每當我在表格上再次輸入 append 數據時,它就會並排粘在一起,然后制作一個新的卡片容器。 以下是一些圖片:</p><p> <a href="https://i.stack.imgur.com/RiJJG.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RiJJG.png" alt="在此處輸入圖像描述"></a></p><p> 當我再次填寫表格時,結果是這樣的: <a href="https://i.stack.imgur.com/Hx2nm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Hx2nm.png" alt="在此處輸入圖像描述"></a></p><p> 如您所見,它從“Random UHC”(這是 Firebase 中的第一個事件)變為“Random UHCRandom Event”。 我一直在嘗試對其進行設置,以便單獨制作一個全新的卡片容器,而不僅僅是使用同一張卡片。 這里還有一些代碼:Form that queries inside Firebase</p><pre> var messagesRef = firebase.database().ref().child('messages'); // Listen for form submit document.getElementById('contactForm').addEventListener('submit', submitForm); // Submit form function submitForm(e){ e.preventDefault(); // Get values var name = getInputVal('name'); var company = getInputVal('eventTitle'); var email = getInputVal('date'); var phone = getInputVal('time'); var message = getInputVal('message'); // Save message saveMessage(name, company, email, phone, message); // Show alert document.querySelector('.alert').style.display = 'block'; // Hide alert after 3 seconds setTimeout(function(){ document.querySelector('.alert').style.display = 'none'; },3000); // Clear form document.getElementById('contactForm').reset(); } // Function to get get form values function getInputVal(id){ return document.getElementById(id).value; } // Save message to firebase function saveMessage(name, eventTitle, date, time, message){ var newMessageRef = messagesRef.push(); newMessageRef.set({ name: name, eventTitle:eventTitle, date:date, time:time, message:message }); }</pre><p> 我如何在新頁面上 output 它:</p><pre> rootRef.on("child_added", snap =&gt; { var name = snap.child("name").val(); var eventTitle = snap.child("eventTitle").val(); $("#eventTitle").append(eventTitle); });</pre><p> 顯示數據頁面的 HTML:</p><pre> &lt;div class="card-main"&gt; &lt;div class="card-head"&gt; &lt;img src="logo.png" alt="logo" class="card-logo"&gt; &lt;div class="product-detail"&gt; &lt;h2&gt;Upcoming Events&lt;/h2&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="card-body-1"&gt; &lt;div class="product-desc"&gt; &lt;span class="product-title"&gt; &lt;b&gt;&lt;p id = eventTitle style="width:18%; float: left;"&gt;&lt;/p&gt;&lt;/b&gt; &lt;span class="badge"&gt; New &lt;/span&gt; &lt;span class="product-caption"&gt; &lt;b&gt;July 5th, 2020 - 5:30 PM EST&lt;/b&gt; &lt;/span&gt; &lt;/span&gt;</pre><p> id 元素 eventTitle 是當前頁面上唯一顯示的內容。 您的幫助將不勝感激。</p></div> 通過Jquery AJAX發送兩個數據? 如何使用ajax和php發送多個同名輸入數據 如何使用Node.js解析telnet數據 javascript中單行添加多條數據 Websocket和telnet連接 使用 JavaScript 進行 Telnet 連接 如何將信息從客戶端發送回相同的連接 當我發送多個ajax請求時,數據相同 如何從服務器上的集合中獲取多條信息?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM