Skip to content
Erlang PubNub API
Find file
Latest commit be677a9 Feb 20, 2016 @tsloughter Merge pull request #11 from shlokspeare/master
history function enabled by modifying the request and binary function.
Failed to load latest commit information.
config cleaned up readme, specs, and config to uniformly use binary instead … Feb 19, 2013
.buildpacks move gemfiles to buildpack Nov 26, 2012
.gitignore update hackney and jsx and switch to rebar3 by default Jan 18, 2015
LICENSE add hex metadata and license Sep 14, 2015 update readme Feb 15, 2016
rebar.config update to hex deps Sep 14, 2015
rebar.lock update to hex deps Sep 14, 2015


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">>).


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}) ->
Something went wrong with that request. Please try again.