aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_http_ws.erl7
-rw-r--r--src/ejabberd_websocket.erl10
2 files changed, 15 insertions, 2 deletions
diff --git a/src/ejabberd_http_ws.erl b/src/ejabberd_http_ws.erl
index d8c58618e..35b38e3e9 100644
--- a/src/ejabberd_http_ws.erl
+++ b/src/ejabberd_http_ws.erl
@@ -364,5 +364,8 @@ parsed_items(List) ->
-spec route_text(pid(), binary()) -> ok.
route_text(Pid, Data) ->
- Pid ! {text, Data},
- ok.
+ Pid ! {text_with_reply, Data, self()},
+ receive
+ {text_reply, Pid} ->
+ ok
+ end.
diff --git a/src/ejabberd_websocket.erl b/src/ejabberd_websocket.erl
index 3b4f03bdf..01a7aa6a1 100644
--- a/src/ejabberd_websocket.erl
+++ b/src/ejabberd_websocket.erl
@@ -225,6 +225,16 @@ ws_loop(FrameInfo, Socket, WsHandleLoopPid, SocketMode, Shaper) ->
end,
erlang:demonitor(Ref),
websocket_close(Socket, WsHandleLoopPid, SocketMode, Code);
+ {text_with_reply, Data, Sender} ->
+ SocketMode:send(Socket, encode_frame(Data, 1)),
+ Sender ! {text_reply, self()},
+ ws_loop(FrameInfo, Socket, WsHandleLoopPid,
+ SocketMode, Shaper);
+ {data_with_reply, Data, Sender} ->
+ SocketMode:send(Socket, encode_frame(Data, 2)),
+ Sender ! {data_reply, self()},
+ ws_loop(FrameInfo, Socket, WsHandleLoopPid,
+ SocketMode, Shaper);
{text, Data} ->
SocketMode:send(Socket, encode_frame(Data, 1)),
ws_loop(FrameInfo, Socket, WsHandleLoopPid,