erlang 웹소켓 연습

주말에 틈틈이 웹소켓을 해봤는데 다음은 제 코드입니다.
chat.erl


-module(chat).
-compile(export_all).

start() ->
	case gen_tcp:listen(8080,[binary, {packet, 0}, {active, true}, {reuseaddr, true}, {packet_size,1024*2},{keepalive,true}]) of
        {ok, Listen} -> 
            spawn(fun() -> par_connect(Listen) end);
        _Err -> 
            io:format("Accept connections failed:~w~n",[_Err])          
    end.

par_connect(Listen) ->
   {ok, Socket} = gen_tcp:accept(Listen),
   spawn(fun() -> par_connect(Listen) end),
   wait(Socket).

wait(Socket) ->
   receive
       {tcp, Socket, Bin} ->
		   io:format("received:~ts~n",[binary_to_list(Bin)]),
           gen_tcp:send(Socket, websockets:handshake(Bin)),
           loop(Socket);
       Any ->
           io:format("Received:~p~n",[Any]),
           wait(Socket)
   end.

loop(Socket) ->
   receive
       {tcp, Socket, Data} ->		  
           io:format("received:~ts~n",[binary_to_list(Data)]),
		   gen_tcp:send(Socket, [Data]),
           loop(Socket);
       Any ->
           io:format("Received:~p~n",[Any]),		   
           loop(Socket)
   end.


websockets.erl 연결 검증 응답 처리 담당 인터넷에서 찾았어요.
주의: 현재 구글 크롬만 웹소켓을 지원합니다

좋은 웹페이지 즐겨찾기