## Sistemas distribuidos con Elixir, primeros pasos Crear un nodo llamado 'node1' ``` $ iex —sname node1 ``` Dentro de `iex`, crear el módulo para el server ```elixir iex(node1@zensoft)1> defmodule GreetServer do ...(node1@zensoft)1> def greet_loop do ...(node1@zensoft)1> receive do ...(node1@zensoft)1> {:greet, pid} -> ...(node1@zensoft)1> IO.puts "Hello #{inspect pid}! from #{inspect self()} ...(node1@zensoft)1> _ -> ...(node1@zensoft)1> IO.puts "uh?" ...(node1@zensoft)1> end ...(node1@zensoft)1> greet_loop() ...(node1@zensoft)1> end ...(node1@zensoft)1> end ``` Crear un proceso que ejecute el código ```elixir iex(node1@zensoft)3> pid = spawn GreetServer, :greet_loop, [] #PID<0.128.0> ``` Enviar mensajes al proceso local ```elixir iex(node1@zensoft)4> send pid, "hola" uh? "hola" iex(node1@zensoft)5> send pid, {:greet, self()} Hello #PID<0.110.0>! from #PID<0.128.0> {:greet, #PID<0.110.0>} ``` En otra terminal, crear otro nodo llamado 'node2' ```elixir $ iex —sname node2 ``` Comprobar que los nodos no se conocen ```elixir iex(node2@zensoft)1> Node.list [] ``` Conectar los nodos ```elixir iex(node2@zensoft)2> Node.connect :node1@zensoft true iex(node2@zensoft)3> Node.list [:node1@zensoft] ``` Registrar de manera global el proceso en el 1er nodo ```elixir iex(node1@zensoft)7> Process.register pid, MyFancyGreetServer true ``` Llamar al proceso desde el 2o nodo ```elixir iex(node2@zensoft)8> send {MyFancyGreetServer, :node1@zensoft}, {:greet, self()} {:greet, #PID<0.110.0>} ``` en el 1er nodo debe aparecer algo como ```elixir Hello #PID<14419.110.0>! from #PID<0.128.0> ```