카우보이 웹 소켓 핸들러에서 예외를 처리하는 방법은 무엇입니까?

악 샤트 지완 샤르마

카우보이 websocket 핸들러에서 jiffy로 구문 분석하는 동안 잘못된 json을 잡으려고합니다. json이 유효하거나 유효하지 않은 websocket_info경우 클라이언트에 응답 할 적절한 메시지를 전달하고 싶습니다 . 다음은 내 코드입니다.

websocket_handle({text, Msg}, Req, State) ->

lager:info("Got message ~p",[Msg]),

try  jiffy:decode(Msg) of 

    {[{A,B}]}->{{[{A,B}]},Req,State};

    _->{{invalid,Msg},Req,State}

catch
    _:_->
        {{invalid,Msg},Req,State}
end;

websocket_handle(_Data, Req, State) ->

                 {ok, Req, State}.

websocket_info({[{A,B}]},Req,State) ->

               {reply,{text,jiffy:encode({registered,B})},Req,State};

websocket_info({invalid,Msg},Req,State)->

              {reply,{text,jiffy:encode({error,<<"invalid json">>})},Req,State};

이로 인해 런타임 예외가 발생합니다.

12 : 07 : 48.406 [오류] Ranch listener http에 연결 프로세스가 <0.523.0> 종료되었으며 이유 : {{try_clause, {{[{<< "register">>, << "my-channel">>}]) }, {http_req, # Port <0.1337>, ranch_tcp, keepalive, <0.523.0>, << "GET">>, 'HTTP / 1.1', {{127,0,0,1}, 34869}, < < "127.0.0.1">>, 정의되지 않음, 3000, << "/ websocket /">>, 정의되지 않음, << >>, 정의되지 않음, [], [{<< "upgrade">>, << "websocket" >>}, {<< "connection">>, << "Upgrade">>}, {<< "host">>, << "127.0.0.1:3000">>},{<<"origin" >>, << "http://localhost:4000">>}, {<<"pragma ">>, <<"no-cache ">>}, {<<"cache-control ">>, <<"no-cache ">>}, {<< "sec-websocket-key">>, << "ueSRxsIc4wM7KdGnyhJOhw ==">>}, {<< "sec-websocket-version">>, << "13">>}, {<< "sec-websocket -extensions ">>, <<"x-webkit-deflate-frame ">>}, {<<"user-agent ">>, <<"Mozilla / 5.0 (X11; Linux i686 (x86_64)) AppleWebKit / 537.36 (Gecko와 같은 KHTML) Chrome / 30.0.1599.114 Safari / 537.36 ">>}], [{<<"sec-websocket-extensions ">>, [{<<"x-webkit-deflate-frame ">>, []}]}, {<< "upgrade">>, [<< "websocket">>]}, {<< "connection ">>, [<<"upgrade ">>]}], undefined, [{websocket_compress, false}, {websocket_version, 13}], waiting, undefined, << >>, false, done, [], < <>>, undefined}, undefined_state}}, [{cowboy_websocket, handler_call, 7, [{file, "src / cowboy_websocket.erl"}, {line, 598}]}, {cowboy_protocol, execute, 4, [{file , "src / cowboy_protocol.erl"}, {line, 529}]}]}

그래서 어떻게 할 수 있습니까?

아빠

답장은 다음에서 반환되어야합니다 websocket_handle.

websocket_handle({text, Msg}, Req, State) ->
    lager:info("Got message ~p", [Msg]),
    try jiffy:decode(Msg) of 
        {[{A, B}]}->
            {reply, {text, jiffy:encode({[{registered,B}]})}, Req, State};
        _ -> 
            {reply, {text, jiffy:encode({[{error,<<"invalid json">>}]})}, Req, State} 
    catch
        _:_ ->
            {reply, {text, jiffy:encode({[{error,<<"invalid json">>}]})}, Req, State};
    end;

websocket_handle(_Data, Req, State) ->
    {ok, Req, State}.

websocket_info(_Info, Req, State) ->
    {ok, Req, State}.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파이썬에서 소켓 "연결 거부"예외를 처리하는 방법은 무엇입니까?

분류에서Dev

동시에 여러 웹 소켓 메시지를 처리하는 방법은 무엇입니까?

분류에서Dev

하나의 핸들러에서 여러 변경 이벤트를 처리하는 방법은 무엇입니까?

분류에서Dev

SSL로 파이썬 웹 소켓을 만들고 쿠키를 사용하는 방법은 무엇입니까?

분류에서Dev

동일한 포트에서 소켓과 웹 소켓 서버를 실행하는 방법은 무엇입니까?

분류에서Dev

토네이도를 소켓 서버와 웹 서버로 사용하는 방법은 무엇입니까?

분류에서Dev

Java 소켓을 사용하여 웹 브라우저에 파일을 보내는 방법은 무엇입니까?

분류에서Dev

WPF 프레임 제어에서 웹 예외를 처리하는 방법은 무엇입니까?

분류에서Dev

IP 주소를 사용하여 웹 브라우저에서 Python 소켓 서버에 연결하는 방법은 무엇입니까?

분류에서Dev

웹 소켓에서받은 값을 다른 웹 소켓으로 전달하는 방법은 무엇입니까?

분류에서Dev

웹 소켓에서받은 값을 다른 웹 소켓으로 전달하는 방법은 무엇입니까?

분류에서Dev

NodeJS 람다 서버리스 웹 소켓에서 요청 객체를 얻는 방법은 무엇입니까?

분류에서Dev

Dart, 서버 측에서 웹 소켓 닫기를 수신하는 방법은 무엇입니까?

분류에서Dev

CRM Dynamics에서 웹 페이지 / 웹 리소스를 표시하는 방법은 무엇입니까?

분류에서Dev

React에서 이벤트 핸들러를 트리거하는 구성 요소를 확인하는 방법은 무엇입니까?

분류에서Dev

웹 사이트에서 리얼 머니를 처리하는 방법은 무엇입니까?

분류에서Dev

View 리소스에서 XML 구문 분석 예외를 처리하는 방법은 무엇입니까?

분류에서Dev

MVVM에서 이벤트를 처리하는 동안 이벤트 핸들러의 두 번째 매개 변수를 보내는 방법은 무엇입니까?

분류에서Dev

고릴라를 사용하여 웹 소켓에 연결하는 방법은 무엇입니까?

분류에서Dev

이 시나리오에서 예외를 처리하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

페이지 외부에서 예외를 처리하는 방법은 무엇입니까?

분류에서Dev

보안 웹 소켓 (wss)을 사용하는 방법은 무엇입니까?

분류에서Dev

AWS API 게이트웨이 웹 소켓에 대한 특정 connectionId에 메시지를 보내는 방법은 무엇입니까?

분류에서Dev

ASP.NET Core RC2에서 웹 소켓 서버를 만드는 방법은 무엇입니까?

분류에서Dev

Android의 웹 소켓 URL에서 비디오를 얻는 방법은 무엇입니까?

분류에서Dev

파이썬에서 오래 살았던 웹 소켓 연결을 만드는 방법은 무엇입니까?

분류에서Dev

소켓 객체에 링크를 보내는 방법은 무엇입니까?

분류에서Dev

xterm.js를 사용하여 AWS Session Manager 웹 소켓 URL에 명령을 보내는 방법은 무엇입니까?

분류에서Dev

하나의 .y 파일에서 들소 버전 차이를 처리하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    파이썬에서 소켓 "연결 거부"예외를 처리하는 방법은 무엇입니까?

  2. 2

    동시에 여러 웹 소켓 메시지를 처리하는 방법은 무엇입니까?

  3. 3

    하나의 핸들러에서 여러 변경 이벤트를 처리하는 방법은 무엇입니까?

  4. 4

    SSL로 파이썬 웹 소켓을 만들고 쿠키를 사용하는 방법은 무엇입니까?

  5. 5

    동일한 포트에서 소켓과 웹 소켓 서버를 실행하는 방법은 무엇입니까?

  6. 6

    토네이도를 소켓 서버와 웹 서버로 사용하는 방법은 무엇입니까?

  7. 7

    Java 소켓을 사용하여 웹 브라우저에 파일을 보내는 방법은 무엇입니까?

  8. 8

    WPF 프레임 제어에서 웹 예외를 처리하는 방법은 무엇입니까?

  9. 9

    IP 주소를 사용하여 웹 브라우저에서 Python 소켓 서버에 연결하는 방법은 무엇입니까?

  10. 10

    웹 소켓에서받은 값을 다른 웹 소켓으로 전달하는 방법은 무엇입니까?

  11. 11

    웹 소켓에서받은 값을 다른 웹 소켓으로 전달하는 방법은 무엇입니까?

  12. 12

    NodeJS 람다 서버리스 웹 소켓에서 요청 객체를 얻는 방법은 무엇입니까?

  13. 13

    Dart, 서버 측에서 웹 소켓 닫기를 수신하는 방법은 무엇입니까?

  14. 14

    CRM Dynamics에서 웹 페이지 / 웹 리소스를 표시하는 방법은 무엇입니까?

  15. 15

    React에서 이벤트 핸들러를 트리거하는 구성 요소를 확인하는 방법은 무엇입니까?

  16. 16

    웹 사이트에서 리얼 머니를 처리하는 방법은 무엇입니까?

  17. 17

    View 리소스에서 XML 구문 분석 예외를 처리하는 방법은 무엇입니까?

  18. 18

    MVVM에서 이벤트를 처리하는 동안 이벤트 핸들러의 두 번째 매개 변수를 보내는 방법은 무엇입니까?

  19. 19

    고릴라를 사용하여 웹 소켓에 연결하는 방법은 무엇입니까?

  20. 20

    이 시나리오에서 예외를 처리하는 가장 좋은 방법은 무엇입니까?

  21. 21

    페이지 외부에서 예외를 처리하는 방법은 무엇입니까?

  22. 22

    보안 웹 소켓 (wss)을 사용하는 방법은 무엇입니까?

  23. 23

    AWS API 게이트웨이 웹 소켓에 대한 특정 connectionId에 메시지를 보내는 방법은 무엇입니까?

  24. 24

    ASP.NET Core RC2에서 웹 소켓 서버를 만드는 방법은 무엇입니까?

  25. 25

    Android의 웹 소켓 URL에서 비디오를 얻는 방법은 무엇입니까?

  26. 26

    파이썬에서 오래 살았던 웹 소켓 연결을 만드는 방법은 무엇입니까?

  27. 27

    소켓 객체에 링크를 보내는 방법은 무엇입니까?

  28. 28

    xterm.js를 사용하여 AWS Session Manager 웹 소켓 URL에 명령을 보내는 방법은 무엇입니까?

  29. 29

    하나의 .y 파일에서 들소 버전 차이를 처리하는 방법은 무엇입니까?

뜨겁다태그

보관