vida tutorial también sinonimo programación lenguaje inmortal framework buscó elixir

tutorial - elixir también se buscó



¿Cómo conectar dos nodos Elixir a través de la red local? (2)

¿Cómo puedo conectar dos nodos Erlang / Elixir de dos máquinas diferentes a través de una conexión de red?


Debe nombrar sus nodos y usar la misma cookie en ambos nodos.

En la máquina 1:

iex --name [email protected] --cookie a_cookie_string

En la máquina 2:

iex --name [email protected] --cookie a_cookie_string

Ahora las dos máquinas se pueden comunicar. Para probarlo, puede hacer algo como esto, en machine1:

iex([email protected])1> Node.connect :"[email protected]" true iex([email protected])2> print_node_name = fn -> IO.puts Node.self end #Function<erl_eval.20.80484245> iex([email protected])3> Node.spawn(:"[email protected]", print_node_name) [email protected] #PID<7789.49.0>

Los nombres de dominio machine1.com y machine1.com se pueden cambiar también con las direcciones IP de las máquinas.


Si intenta conectar nodos por código: debe convertir su código de ejecución en un nodo distribuido. Para hacer esto, ejecute Node.start(:fullNameOfServer) .

Por ejemplo: si su IP es 192.168.0.1, puede tener un nombre de nodo completo como :"[email protected]"

Una vez que convierte su nodo en un nodo distribuido, configura la cookie: Node.set_cookie :cookie_name

Finalmente, debe establecer una conexión con el nodo remoto. (También necesita Node.start y Node.set_cookie en el nodo remoto) Para hacer esto, necesita el nombre del nodo remoto. Supongamos que el nombre del nodo remoto es [email protected] (suponiendo que este nodo sea otra computadora en la misma red local). El código para hacer esto se parece a Node.connect :"[email protected]"

Ahora puede ejecutar Node.list para ver la [email protected] disponible en [email protected] y viceversa.

Resumiendo los puntos anteriores, su código debería verse algo así como

En la máquina Foo

Node.start :"[email protected]" #this is the IP of the machine on which you run the code Node.set_cookie :cookie_name Node.connect "[email protected]"

En la máquina de Bar

Node.start :"[email protected]" Node.set_cookie :cookie_name