If you like pattern matching in the function signature vs a case expression, you could 'forward' the decoded message to another 'internal' function.
websocket_handle({text, Msg}, Req, Handle) ->
Message = jiffy:decode(Msg),
websocket_handle_({test, Message}, Req, Handle).
websocket_handle_({text, Pattern1}, Req, Handle) ->
{ok, Req, State};
websocket_handle_({text, Pattern2}, Req, Handle) ->
{reply, OutFrame | [OutFrame], Req, State};
websocket_handle_({text, PatternN}, Req, Handle) ->
{ok, Req, State}.