anchor.diff:    (remhash (client-ws-client client) (slot-value srv 'clients)))
   
   (defmethod disconnect-client ((server chat-server) client)
  -  (let ((ws-client (client-ws-client client))
  -        (session (client-session client)))
  -    (ws:write-to-client-close ws-client)
  -    (when session
  -      (deletef (session-websocket-clients session)
  -               client))))
  +  (ws:write-to-client-close (client-ws-client client)))
   
   (defun client-account-id (client)
     (when-let (sess (client-session client))
  
positive.code: 
  (defun init-websockets (&optional (port *chat-server-port*))
    (register-chat-server)
    (register-session-finalizer 'websocket-clients
                                (lambda (session-id)
                                  (when-let (clients (session-websocket-clients session-id))
                                    (map nil #'disconnect-client clients))))
    (setf *websocket-thread*
          (bordeaux-threads:make-thread
           (lambda ()
  
negative.code: (defclass chat-server (ws:ws-resource)
    ((clients :initform (make-hash-table :test #'eq))))
  
  (defmethod ws:resource-client-disconnected ((res chat-server) ws-client
                                              &aux (client (find-client res ws-client)))
    (logit "Client ~S disconnected." client)
  