Skip to content

Instantly share code, notes, and snippets.

@majek
Created January 27, 2012 12:19
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 majek/1688528 to your computer and use it in GitHub Desktop.
Save majek/1688528 to your computer and use it in GitHub Desktop.
SockJS-erlang cowboy api proposal (advanced)
-module(test2).
-export([start/0]).
%% Cowboy callbacks
-export([init/3, handle/2, terminate/2]).
start() ->
Port = 8081,
application:start(sockjs),
Options = [{callback, fun service_echo/2}],
Routes = [{'_', [{'_', ?MODULE, Options}]}], % any vhost, any path
cowboy:start_listener(http, 100,
cowboy_tcp_transport, [{port, Port}],
cowboy_http_protocol, [{dispatch, Routes}]),
ok.
%% --------------------------------------------------------------------------
init({_Any, http}, Req, Options) ->
case first_part_of_the_url(Req) of
<<"/echo">> -> sockjs_cowboy2:init(Req,
[{prefix, <<"/echo">> }] ++ Options);
_Any -> {ok, Req, Options}
end.
handle(Req, Options) ->
case first_part_of_the_url(Req) of
<<"/echo">> -> sockjs_cowboy2:handle(Req,
[{prefix, <<"/echo">> }] ++ Options);
_Any ->
{ok, Req3} = cowboy_http_req:reply(404, [],
"404 - Nothing here (via sockjs-erlang fallback)",
Req2),
Req3
end.
terminate(_Req, _State) ->
ok.
%% --------------------------------------------------------------------------
service_echo(Conn, {recv, Data}) -> sockjs:send(Data, Conn);
service_echo(_Conn, _) -> ok.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment