簡體   English   中英

如何從另一個 function 向連接到 Node.js 套接字服務器的客戶端寫入數據?

[英]How can I write data to the client connected to a Node.js socket server from another function?

我正在嘗試制作一個 function ,它允許從 node-chakracore 實例觸發 Node 的 V8 實例中的腳本。 我通過將較新版本的 Node 作為子進程運行來做到這一點。 我想這樣做,它只有 1 個較新的 Node 實例,而不是為我要運行的每個腳本創建另一個。 我想要一個runV8Script function 來觸發 V8 端的腳本。 我想要觸發腳本的方式是擁有一個 IPC 套接字,服務器端是 Chakra,客戶端是 V8。

我遇到的問題是我想不出如何在服務器回調之外使用client ,這意味着我不能讓 function 發送數據。

我只是用下面的簡單代碼創建這個服務器,沒什么花哨的

let server = net.createServer(client => {
    // The client can only be used inside of this callback
});

我正在嘗試制作一個 function ,它允許從 node-chakracore 實例觸發 Node 的 V8 實例中的腳本。 [...] 我想要觸發腳本的方式是使用 IPC 套接字,服務器端是 Chakra,客戶端是 V8。

一般的經驗法則是:客戶端觸發服務器中的事件,而不是相反。

幸運的是,這是完全可能的,因為 Node 是一個服務器,它可以向其他服務器發送請求。 因此,您可以讓 Node-Chakracore 實例針對您要服務的實際請求以服務器角色運行,同時針對 Node-V8 實例(在不同端口上運行)充當客戶端角色通過在那里發送請求。

您可以手動單獨啟動 Node-V8 實例,也可以讓 Node-Chakracore 實例將其作為子進程啟動(在啟動時)。 無論哪種方式,這兩個實例都將通過套接字(HTTP 或其他,您的選擇)相互通信。

更詳細一點,以防不明顯:對於 Chakra 實例,您將編寫一個向 V8 實例發送請求的處理程序,第二個請求獲得一個完成處理程序,該處理程序可選擇處理其結果並將其交給到第一個請求的完成處理程序。 (所以這在概念上與處理數據庫請求或類似的東西非常相似;“數據庫”恰好是另一個 Node 實例。)

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM