Durable subscriber in Erlang

#! /usr/bin/env escript
%%
%% Durable subscriber
%%

main(_) ->
{ok, Context} = erlzmq:context(),

%% Connect our subscriber socket
{ok, Subscriber} = erlzmq:socket(Context, sub),
ok = erlzmq:setsockopt(Subscriber, identity, @<@@[[/span]][[span style="color:#BA2121"]]"Hello"[[/span]][[span style="color:#666666"]]@@>@),
ok = erlzmq:setsockopt(Subscriber, subscribe, @<>@),
ok = erlzmq:connect(Subscriber, "tcp://localhost:5565"),

%% Synchronize with publisher
{ok, Sync} = erlzmq:socket(Context, push),
ok = erlzmq:connect(Sync, "tcp://localhost:5564"),
ok = erlzmq:send(Sync, @<>@),

%% Get updates, exit when told to do so
loop(Subscriber),

ok = erlzmq:close(Sync),
ok = erlzmq:close(Subscriber),
ok = erlzmq:term(Context).

loop(Subscriber) ->
case erlzmq:recv(Subscriber) of
{ok, @<@@[[/span]][[span style="color:#BA2121"]]"END"[[/span]][[span style="color:#666666"]]@@>@} -> ok;
{ok, Msg} ->
io:format("~s~n", [Msg]),
loop(Subscriber)
end.