diff options
author | Matthew Wolff <matthewjwolff@gmail.com> | 2024-05-08 19:38:02 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2024-05-09 07:51:56 -0400 |
commit | 438d87675d9ef18695475685ff36ff75a5506466 (patch) | |
tree | d2d49e3d0f19377b251bd27f3e1a9e52cbae79f2 /web/socket/server.scm | |
parent | 0ab74ba68c57f7b16832c3549d9939a3c78d7da4 (diff) |
Distinguish close frames from timeouts.
Diffstat (limited to 'web/socket/server.scm')
-rw-r--r-- | web/socket/server.scm | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/web/socket/server.scm b/web/socket/server.scm index 3394d3b..353a2eb 100644 --- a/web/socket/server.scm +++ b/web/socket/server.scm @@ -95,10 +95,12 @@ called for each complete message that is received." (write-response response client-socket) (force-output client-socket) (let loop () - (let ((frame (read-data-frame client-socket #:echo-close? #t))) - (when frame - (handle-data-frame (frame-type frame) (frame-data frame)) - (loop)))))) + (match (read-data-frame client-socket #:echo-close? #t) + ((or #f (? close-frame?)) + (values)) + (frame + (handle-data-frame (frame-type frame) (frame-data frame)) + (loop)))))) (define* (run-server handler #:optional (server-socket (make-server-socket))) "Run WebSocket server on SERVER-SOCKET. HANDLER, a procedure that |