Skip to content

Commit

Permalink
Merge pull request #67 from SuperDisk/emit-close-socket
Browse files Browse the repository at this point in the history
Emit a socket closed event in a non-async socket loop
  • Loading branch information
fukamachi authored Jul 9, 2024
2 parents 4c84ee5 + c7323af commit 17ba553
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/ws/server.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@

(defmethod start-connection ((server server) &key)
(unless (eq (ready-state server) :connecting)
(return-from start-connection))
(return-from start-connection))

(let ((socket (socket server)))
(setf (read-callback socket)
Expand All @@ -81,7 +81,8 @@
while frame
do (funcall (read-callback socket) frame))
(close-connection server)
(setf (ready-state server) :closed)))))
(setf (ready-state server) :closed)
(wsd:emit :close server :code 1006 :reason "websocket connection closed")))))

(defmethod close-connection ((server server) &optional (reason "") (code (error-code :normal-closure)))
(setf (ready-state server) :closing)
Expand All @@ -101,11 +102,11 @@
:code code
:masking nil)))
(handler-case
(write-sequence-to-socket (socket server) frame
:callback callback)
(write-sequence-to-socket (socket server) frame
:callback callback)
(error ()
(setf (ready-state server) :closed)
(wsd:emit :close server :code 1006 :reason "websocket connection closed")))))
(wsd:emit :close server :code 1006 :reason "websocket connection closed")))))

(defmethod send-handshake-response ((server server) &key callback)
(let ((socket (socket server))
Expand Down

0 comments on commit 17ba553

Please sign in to comment.