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 node1@machine1.com --cookie a_cookie_string

En la máquina 2:

iex --name node2@machine2.com --cookie a_cookie_string

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

iex(node1@machine1.com)1> Node.connect :"node2@machine2.com" true iex(node1@machine1.com)2> print_node_name = fn -> IO.puts Node.self end #Function<erl_eval.20.80484245> iex(node1@machine1.com)3> Node.spawn(:"node2@machine2.com", print_node_name) node2@machine2.com #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 :"foo@192.168.0.1"

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 bar@192.168.0.2 (suponiendo que este nodo sea otra computadora en la misma red local). El código para hacer esto se parece a Node.connect :"bar@192.168.0.2"

Ahora puede ejecutar Node.list para ver la bar@192.168.0.2 disponible en foo@192.168.0.1 y viceversa.

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

En la máquina Foo

Node.start :"foo@192.168.0.1" #this is the IP of the machine on which you run the code Node.set_cookie :cookie_name Node.connect "bar@192.168.0.2"

En la máquina de Bar

Node.start :"bar@192.168.0.2" Node.set_cookie :cookie_name