Exredis を使っています。
defmodule Subscribe do def sub(channel) do {:ok ,client_sub} = Exredis.Sub.start_link pid = Kernel.self Exredis.Sub.subscribe(client_sub, channel, fn msg -> send(pid, msg) end) receive do {:subscribed, ^channel, _pid} -> IO.puts "OK" end loop(channel) end def loop(channel) do receive do {:message, ^channel, message, _pid} -> IO.puts message loop(channel) end end end
どこかで起動しておく。Redis も起動しておく。
> Subscribe.sub("test") OK
Pub 。
> import Exredis > Exredis.Api.publish(client, "test", "Hello")
こんな風に表示されます。
> Subscribe.sub("test") OK Hello
Ruby でも。
require 'redis' r = Redis.new r.publish('test', 'Hello')
> Subscribe.sub("test") OK Hello Hello