Skip to content
This repository was archived by the owner on May 5, 2020. It is now read-only.

Commit f192702

Browse files
committed
Fix #3, send queued messages as soon as connection is reestablished
1 parent 6fee480 commit f192702

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/WebSocket.elm

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,15 @@ onSelfMsg router selfMsg state =
265265
Task.succeed (updateSocket name (Opening 0 pid) state)
266266

267267
GoodOpen name socket ->
268-
Task.succeed (updateSocket name (Connected socket) state)
268+
case Dict.get name state.queues of
269+
Nothing ->
270+
Task.succeed (updateSocket name (Connected socket) state)
271+
272+
Just messages ->
273+
List.foldl
274+
(\msg task -> WS.send socket msg &> task)
275+
(Task.succeed (removeQueue name (updateSocket name (Connected socket) state)))
276+
messages
269277

270278
BadOpen name ->
271279
case Dict.get name state.sockets of
@@ -287,6 +295,11 @@ updateSocket name connection state =
287295
{ state | sockets = Dict.insert name connection state.sockets }
288296

289297

298+
removeQueue : String -> State msg -> State msg
299+
removeQueue name state =
300+
{ state | queues = Dict.remove name state.queues }
301+
302+
290303

291304
-- OPENING WEBSOCKETS WITH EXPONENTIAL BACKOFF
292305

0 commit comments

Comments
 (0)