


Expliquez comment communiquer entre deux processus Node.js dans différents scénarios !
Node.js进程间如何进行通信?下面本篇文章给大家介绍一下分场景介绍两个 Node.js 进程间进行通信的方法,希望对大家有所帮助!
两个 Node.js 进程之间如何进行通信呢?这里要分两种场景:
不同电脑上的两个 Node.js 进程间通信
同一台电脑上两个 Node.js 进程间通信
【推荐学习:《nodejs 教程》】
对于第一种场景,通常使用 TCP 或 HTTP 进行通信,而对于第二种场景,又分为两种子场景:
Node.js 进程和自己创建的 Node.js 子进程通信
Node.js 进程和另外不相关的 Node.js 进程通信
前者可以使用内置的 IPC 通信通道,后者可以使用自定义管道,接下来进行详细介绍:
不同电脑上的两个 Node.js 进程间通信
要想进行通信,首先得搞清楚如何标识网络中的进程?网络层的 ip 地址可以唯一标识网络中的主机,而传输层的协议和端口可以唯一标识主机中的应用程序(进程),这样利用三元组(ip 地址,协议,端口)就可以标识网络的进程了。
使用 TCP 套接字
TCP 套接字(socket)是一种基于 TCP/IP 协议的通信方式,可以让通过网络连接的计算机上的进程进行通信。一个作为 server 另一个作为 client,server.js 代码如下:
const net = require('net') const server = net.createServer(socket => { console.log('socket connected') socket.on('close', () => console.log('socket disconnected')) socket.on('error', err => console.error(err.message)) socket.on('data', data => { console.log(`receive: ${data}`) socket.write(data) console.log(`send: ${data}`) }) }) server.listen(8888)
client.js 代码:
const net = require('net') const client = net.connect(8888, '192.168.10.105') client.on('connect', () => console.log('connected.')) client.on('data', data => console.log(`receive: ${data}`)) client.on('end', () => console.log('disconnected.')) client.on('error', err => console.error(err.message)) setInterval(() => { const msg = 'hello' console.log(`send: ${msg}`) client.write(msg) }, 3000)
运行效果:
$ node server.js client connected receive: hello send: hello $ node client.js connect to server send: hello receive: hello
使用 HTTP 协议
因为 HTTP 协议也是基于 TCP 的,所以从通信角度看,这种方式本质上并无区别,只是封装了上层协议。server.js 代码为:
const http = require('http') http.createServer((req, res) => res.end(req.url)).listen(8888)
client.js 代码:
const http = require('http') const options = { hostname: '192.168.10.105', port: 8888, path: '/hello', method: 'GET', } const req = http.request(options, res => { console.log(`statusCode: ${res.statusCode}`) res.on('data', d => process.stdout.write(d)) }) req.on('error', error => console.error(error)) req.end()
运行效果:
$ node server.js url /hello $ node client.js statusCode: 200 hello
同一台电脑上两个 Node.js 进程间通信
虽然网络 socket 也可用于同一台主机的进程间通讯(通过 loopback 地址 127.0.0.1),但是这种方式需要经过网络协议栈、需要打包拆包、计算校验和、维护序号和应答等,就是为网络通讯设计的,而同一台电脑上的两个进程可以有更高效的通信方式,即 IPC(Inter-Process Communication),在 unix 上具体的实现方式为 unix domain socket,这是服务器端和客户端之间通过本地打开的套接字文件进行通信的一种方法,与 TCP 通信不同,通信时指定本地文件,因此不进行域解析和外部通信,所以比 TCP 快,在同一台主机的传输速度是 TCP 的两倍。
使用内置 IPC 通道
如果是跟自己创建的子进程通信,是非常方便的,child_process 模块中的 fork 方法自带通信机制,无需关注底层细节,例如父进程 parent.js 代码:
const fork = require("child_process").fork const path = require("path") const child = fork(path.resolve("child.js"), [], { stdio: "inherit" }); child.on("message", (message) => { console.log("message from child:", message) child.send("hi") })
子进程 child.js 代码:
process.on("message", (message) => { console.log("message from parent:", message); }) if (process.send) { setInterval(() => process.send("hello"), 3000) }
运行效果如下:
$ node parent.js message from child: hello message from parent: hi message from child: hello message from parent: hi
使用自定义管道
如果是两个独立的 Node.js 进程,如何建立通信通道呢?在 Windows 上可以使用命名管道(Named PIPE),在 unix 上可以使用 unix domain socket,也是一个作为 server,另外一个作为 client,其中 server.js 代码如下:
const net = require('net') const fs = require('fs') const pipeFile = process.platform === 'win32' ? '\\\\.\\pipe\\mypip' : '/tmp/unix.sock' const server = net.createServer(connection => { console.log('socket connected.') connection.on('close', () => console.log('disconnected.')) connection.on('data', data => { console.log(`receive: ${data}`) connection.write(data) console.log(`send: ${data}`) }) connection.on('error', err => console.error(err.message)) }) try { fs.unlinkSync(pipeFile) } catch (error) {} server.listen(pipeFile)
client.js 代码如下:
const net = require('net') const pipeFile = process.platform === 'win32' ? '\\\\.\\pipe\\mypip' : '/tmp/unix.sock' const client = net.connect(pipeFile) client.on('connect', () => console.log('connected.')) client.on('data', data => console.log(`receive: ${data}`)) client.on('end', () => console.log('disconnected.')) client.on('error', err => console.error(err.message)) setInterval(() => { const msg = 'hello' console.log(`send: ${msg}`) client.write(msg) }, 3000)
运行效果:
$ node server.js socket connected. receive: hello send: hello $ node client.js connected. send: hello receive: hello
更多编程相关知识,请访问:编程入门!!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Quel processus est explorer.exe ? Lorsque nous utilisons le système d'exploitation Windows, nous entendons souvent le terme « explorer.exe ». Alors, êtes-vous curieux de savoir ce qu'est ce processus ? Dans cet article, nous expliquerons en détail ce qu'est le processus explorer.exe ainsi que ses fonctions et effets. Tout d'abord, explorer.exe est un processus clé du système d'exploitation Windows. Il est responsable de la gestion et du contrôle de l'Explorateur Windows (Window).

ccsvchst.exe est un fichier de processus commun qui fait partie du logiciel Symantec Endpoint Protection (SEP), et SEP est une solution de protection des points finaux développée par la célèbre société de sécurité réseau Symantec. Dans le cadre du logiciel, ccsvchst.exe est responsable de la gestion et de la surveillance des processus liés à SEP. Tout d’abord, jetons un coup d’œil à SymantecEndpointProtection(

Dans l'article précédent (lien), Xiao Zaojun a présenté l'historique du développement de la technologie haut débit, du RNIS, du xDSL au 10GPON. Aujourd'hui, parlons de la nouvelle génération à venir de technologie haut débit par fibre optique-50GPON. █F5G et F5G-A Avant de présenter 50GPON, parlons d'abord de F5G et F5G-A. En février 2020, l'ETSI (European Telecommunications Standards Institute) a promu un système technologique de réseau de communication fixe basé sur 10GPON+FTTR, Wi-Fi6, transmission/agrégation optique 200G, OXC et d'autres technologies, et l'a nommé F5G. technologie de communication en réseau (The5thGenerationFixednetworks). F5G est un réseau fixe

Dans les systèmes Linux, les processus zombies sont des processus spéciaux qui ont été interrompus mais restent toujours dans le système. Bien que les processus zombies ne consomment pas beaucoup de ressources, s'il y en a trop, ils peuvent entraîner un épuisement des ressources système. Cet article explique comment supprimer correctement les processus zombies pour assurer le fonctionnement normal du système. 1Processus zombie Linux Une fois que le processus enfant a terminé sa tâche, si le processus parent ne vérifie pas l'état à temps, le processus enfant deviendra un processus zombie. Le processus enfant attend la confirmation du processus parent et le système ne le recyclera pas tant qu'il ne sera pas terminé. Sinon, le processus zombie continuera à se bloquer dans le système. Pour vérifier s'il existe des processus zombies dans le système, vous pouvez exécuter la commande top pour afficher tous les processus en cours et les processus zombies possibles. Le résultat de la commande « top » peut être vu dans la figure ci-dessus sous Linux.

Explication détaillée de la méthode d'ajustement de la priorité des processus Linux. Dans le système Linux, la priorité d'un processus détermine son ordre d'exécution et l'allocation des ressources dans le système. Un ajustement raisonnable de la priorité du processus peut améliorer les performances et l'efficacité du système. Cet article présentera en détail comment ajuster la priorité du processus sous Linux et fournira des exemples de code spécifiques. 1. Présentation de la priorité des processus Dans le système Linux, chaque processus est associé à une priorité. La plage de priorité va généralement de -20 à 19, où -20 représente la priorité la plus élevée et 19 représente

Nokia a annoncé aujourd'hui la vente de son activité de plateforme de gestion d'appareils et de gestion de services au groupe Lumine pour 185 millions d'euros, qui devrait être finalisée au premier trimestre de l'année prochaine. Selon nos conclusions, Lumine est une société de logiciels de communication et de médias qui était. récemment issu de Constellation Software. Dans le cadre de l'accord, environ 500 employés de Nokia devraient rejoindre Lumine. Selon des informations publiques, l'activité de ces plates-formes a été principalement constituée par Nokia grâce à ses deux acquisitions précédentes de Motive et mFormation. Lumine a déclaré qu'elle avait l'intention de relancer la marque Motive en tant qu'unité commerciale indépendante. Lumine a déclaré que le prix d'acquisition comprend une somme pouvant aller jusqu'à.

Titre original : « Comment une souris sans fil devient-elle sans fil ? 》Les souris sans fil sont progressivement devenues un élément standard des ordinateurs de bureau d'aujourd'hui. Désormais, nous n'avons plus besoin de traîner de longs câbles. Mais comment fonctionne une souris sans fil ? Aujourd'hui, nous allons découvrir l'histoire du développement de la souris sans fil n°1. Saviez-vous que la souris sans fil a maintenant 40 ans ? En 1984, Logitech a développé la première souris sans fil au monde, mais cette souris sans fil utilisait l'infrarouge comme signal. On dit que le transporteur ressemble à l'image ci-dessous, mais il a ensuite échoué pour des raisons de performances. Ce n'est qu'en 1994, dix ans plus tard, que Logitech réussit enfin à développer une souris sans fil fonctionnant à 27 MHz. Cette fréquence de 27 MHz est également devenue la souris sans fil pendant longtemps.

À l’ère numérique d’aujourd’hui, le haut débit est devenu une nécessité pour chacun d’entre nous et chaque famille. Sans cela, nous serions agités et agités. Alors, connaissez-vous les principes techniques du haut débit ? Depuis la première connexion commutée 56k "cat" jusqu'aux villes et foyers Gigabit actuels, quels types de changements notre technologie haut débit a-t-elle connu ? Dans l’article d’aujourd’hui, examinons de plus près « l’histoire du haut débit ». Avez-vous vu cette interface entre █xDSL et RNIS ? Je crois que de nombreux amis nés dans les années 70 et 80 ont dû le voir et le connaissent très bien. C'est vrai, c'était l'interface pour « accès commuté » lorsque nous sommes entrés en contact avec Internet pour la première fois. C'était il y a plus de 20 ans, lorsque Xiao Zaojun était encore à l'université. Pour surfer sur Internet, je
