2017-11-12 4 views
2

Ich habe zwei NodeJS (dienen) im gleichen Server zur gleichen Zeit ausgeführt wird, ich mag eine Funktion zu Anruf von einem zum anderen, sie laufen mit für immer, es ist wie normal laufen wie nodejs file.jsAnruffunktion von einem NodeJS Server auf einem anderen NodeJS Server in demselben Server

Was kann ich tun?

Dinge, die ich denke, was ich tun kann ...

1.- erstellen Server-Seite in jeder mit UDP- und Client-Seite in jeder? und die Funktion aufrufen, wenn es erfordert

2.- kommen zwei Server in einer Datei und führen Sie es ... , aber ich will sie nicht

Meine Frage ist, was kann ich tun ?, ist es eine andere Option für das ?, Ich möchte verschiedene Optionen von mir ...?

+0

Sind das zwei Skripte oder zwei * Server *? Denn wenn sie echte Server sind, haben sie bereits ein TCP/UDP, das Sie anrufen können. Wenn es sich nur um zwei Skripts handelt, die einige Funktionen ausführen, und Sie Funktionalität zwischen ihnen austauschen müssen, erstellen Sie ein Knotenmodul mit dieser freigegebenen Funktionalität und fügen Sie das Modul in beide Skripts ein. – Tomalak

Antwort

1

Unabhängig davon, ob sie sich auf einem einzelnen Computer befinden oder nicht, würde ich Redis pub-sub für die prozessübergreifende Kommunikation ohne strenge Anforderungen empfehlen.

Sie können diese auch von einem Hauptprozess abzweigen, um eine Kommunikation herzustellen, aber das ist eher ungewöhnlich, wenn Sie eine praktische Lösung wünschen. https://nodejs.org/api/child_process.html Auch hier als Standardlösung beschrieben. Communicating between two different processes in Node.js

Redis Pub-Sub sollte zukunftssicherer und schwieriger für Sie zu brechen sein.

https://gist.github.com/reu/5342276

+0

PS. Es könnte andere Optionen geben, die sowohl mehr als auch weniger fortgeschritten sind. Ich schlage das aus Erfahrung vor.Dies ist nur eine Meinung – naugtur

+0

Ich werde redis für meine zwei Server verwenden, ist wie Sockets udp – DarckBlezzer

1

Verwenden process.fork/

senden Wenn beiden Prozesse sind Knoten, Knotenkern bietet einen einfachen, ereignisgesteuerte IPC-Mechanismus. Sie müssen jedoch den einen Prozess zum "Master" machen, was bedeutet, dass er den anderen startet.

http://nodejs.org/docs/latest/api/all.html#all_child_process_fork_modulepath_args_options

  • ereignisbasierte
  • bidirektionale
  • effizient
  • nur OS Ressourcen verwendet
  • in-memory

entnommen aus: Inter-process event emitter for Node.js?

+0

diese Option ist nicht für mich, und ich muss den zweiten Server in der ersten und wenn der erste Server läuft der zweite ausgeführt wird wie ein Kind – DarckBlezzer