@rip-lang/server 1.1.10 → 1.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server.rip +18 -4
package/package.json
CHANGED
package/server.rip
CHANGED
|
@@ -872,6 +872,18 @@ class Server
|
|
|
872
872
|
registerWatch: (prefix) ->
|
|
873
873
|
return if @watchGroups.has(prefix)
|
|
874
874
|
@watchGroups.set prefix, { sseClients: new Set() }
|
|
875
|
+
@startHeartbeat()
|
|
876
|
+
|
|
877
|
+
startHeartbeat: ->
|
|
878
|
+
return if @_heartbeat
|
|
879
|
+
@_heartbeat = setInterval =>
|
|
880
|
+
for [prefix, group] as @watchGroups
|
|
881
|
+
dead = []
|
|
882
|
+
for client as group.sseClients
|
|
883
|
+
try client.ping()
|
|
884
|
+
catch then dead.push(client)
|
|
885
|
+
group.sseClients.delete(c) for c in dead
|
|
886
|
+
, 5000
|
|
875
887
|
|
|
876
888
|
handleWatch: (prefix) ->
|
|
877
889
|
group = @watchGroups.get(prefix)
|
|
@@ -880,12 +892,14 @@ class Server
|
|
|
880
892
|
client = null
|
|
881
893
|
new Response new ReadableStream(
|
|
882
894
|
start: (controller) ->
|
|
883
|
-
|
|
884
|
-
try controller.enqueue encoder.encode(
|
|
895
|
+
write = (data) ->
|
|
896
|
+
try controller.enqueue encoder.encode(data)
|
|
885
897
|
catch then null
|
|
886
|
-
client =
|
|
898
|
+
client =
|
|
899
|
+
send: (event) -> write "event: #{event}\n\n"
|
|
900
|
+
ping: -> write ":\n\n"
|
|
887
901
|
group.sseClients.add(client)
|
|
888
|
-
send('connected')
|
|
902
|
+
client.send('connected')
|
|
889
903
|
cancel: ->
|
|
890
904
|
group.sseClients.delete(client) if client
|
|
891
905
|
),
|