Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Author: Tristan Sloughter website:

Version: 0.1.0

Quick Start

  • Build

Install rebar3.

$ rebar3 compile
  • Test
$ rebar3 shell
1> application:ensure_all_started(epubnub).
2> epubnub:publish(<<"hello_world">>, <<"hello">>).

Examples to publish / see history on channels other than default channels, define a record epn as under (or can be abstracted)
3> rd(epn, {origin, pubkey, subkey, secretkey, client, is_ssl}).
4>  EPN = #epn{origin= <<"">>, pubkey = <<"pub-abcd">>, subkey = <<"sub-abcd">>,secretkey= <<"sec-abcd">>,is_ssl=false}.
#epn{origin = <<"">>,
     pubkey = <<"pub-abcd">>,
     subkey = <<"sub-abcd">>,
     secretkey = <<"sec-abcd">>,
     client = undefined,is_ssl = false}
5> erpubnub:publish(EPN,<<"channel_name">>,<<"message">>).
6> epubnub:history(EPN,<<"channel_name">>,1).


src/epn_example_client has a simple example of a gen_server subscribing to a channel. The init function takes an EPN record, created with epubsub:new() in start_link and requests to subscribe to the "hello_world" channel and sends its PID with the self() function so new messages are sent to this process.

init([EPN]) ->
    {ok, PID} = epubnub_sup:subscribe(EPN, <<"hello_world">>, self()),
    {ok, #state{pid=PID}}.

Since currently the subscribe loop sends the message with the bang (!) the gen_server will handle the new message in handle_info. The example simply prints out the contents of the message:

handle_info({message, Message}, State) ->
    io:format("~p~n", [Message]),
    {noreply, State}.

To unscribe we call the module stop function that sends an async stop message to the process. The handle_cast function handles this message and return stop telling the gen_server to go to terminate. In terminate we take the PID of the subscribed process to the epubnub unsubscribe function which sends it a terminate message and it exits.

stop() ->
    gen_server:cast(?SERVER, stop).

handle_cast(stop, State) ->
    {stop, normal, State}.

terminate(_Reason, #state{pid=PID}) ->