Skip to content

Instantly share code, notes, and snippets.

@kblake
Created June 29, 2016 03:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kblake/f0093c0f9c5d6c02f19af613c777a38c to your computer and use it in GitHub Desktop.
Save kblake/f0093c0f9c5d6c02f19af613c777a38c to your computer and use it in GitHub Desktop.
defmodule ChatClient do
@server_name :chat_server
def hello do
IO.puts "hello world!!!"
end
def join_server server_id, cookie \\ :"cookiemonster" do
Node.set_cookie(Node.self, cookie)
pid = spawn(__MODULE__, :message_listener, [])
Node.connect server_id
:global.register_name(Node.self, pid)
end
def server_name do
@server_name
end
def server do
:global.whereis_name(server_name)
end
def friends do
recipients = List.delete :global.registered_names, server_name
List.delete recipients, Node.self
end
def broadcast message do
send server, {:all, Node.self, message}
:ok
end
def direct_message friend, message do
send server, {:private_message, Node.self, friend, message}
:ok
end
def message_listener do
receive do
{sender, message} ->
IO.puts "#{sender}: #{message}"
message_listener
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment