anchor.diff:               (logit "Something funky is cooking.")
                (disconnect-client res existing-client))
              (setf (client-entity-id client) character-id)
  +           (add-client res client)
              (push (session-websocket-clients (client-session client)) client))
             (t
              (logit "No session. Disconnecting client. (~S)" client)
  
positive.code:     (logit "Client successfully validated: ~S" client)
      client))
  
  (defun process-client-validation (res client json-message
                                    &aux (*acceptor* *server*)
                                    (message (jsown:parse json-message)))
    (setf (client-user-agent client) (jsown:val message "useragent")
          (client-validation-token client) (jsown:val message "token"))
    (let* ((client-valid-p (validate-client res client))
           (char-index (jsown:val message "char"))
           (character-id (nth char-index (account-characters (client-account-id client)))))
      (cond ((and client-valid-p character-id)
  
negative.code: (defun (setf session-websocket-clients) (new-value session)
    (setf (transient-session-value 'websocket-clients session) new-value))
  
  (defmethod ws:resource-client-disconnected ((res chat-server) ws-client
                                              &aux (client (find-client res ws-client)))
    (logit "Client ~S disconnected." client)
    (continuable (remove-client res client)))
  
  (defmethod ws:resource-received-text ((res chat-server) ws-client message)
    (continuable
      (let ((client (find-client res ws-client)))
        (if (and client (client-session client))
            (process-client-message res client message)
            (handle-new-client res ws-client message)))))
  
  (defgeneric add-client (chat-server client))
  (defgeneric remove-client (chat-server client))
  