anchor.diff:  (defvar *websocket-thread* nil)
   (defvar *chat-resource-thread* nil)
   
  -(defun init-websockets (&optional (port *chat-server-port*))
  -  (register-chat-server)
  +(defparameter *websocket-origin-prefix* "http://zushakon.sykosomatic.org")
  +(defparameter *websocket-resource-name* "/chat")
  +
  +(defun init-websockets (&key (port *chat-server-port*)
  +                        (resource-name *websocket-resource-name*)
  +                        (origin-prefix *websocket-origin-prefix*))
  +  (register-chat-server (make-instance 'chat-server
  +                                       :origin-prefix origin-prefix
  +                                       :resource-name resource-name))
     (setf *websocket-thread*
           (bordeaux-threads:make-thread
            (lambda ()
  
positive.code: 
  (defmethod remove-client ((srv chat-server) client)
    (remhash (client-ws-client client) (slot-value srv 'clients)))
  
  (defmethod disconnect-client ((server chat-server) client)
    (ws:write-to-client-close (client-ws-client client)))
  
negative.code: ;;;
  ;;; Protocol implementations
  ;;;
  (defclass chat-server (ws:ws-resource)
    ((clients :initform (make-hash-table :test #'eq))
     (origin-prefix :initarg :origin-prefix :reader origin-prefix)
     (resource-name :initarg :resource-name :reader resource-name)))
  
  (defmethod ws:resource-client-disconnected ((res chat-server) ws-client
                                              &aux (client (find-client res ws-client)))
    (logit "Client ~S disconnected." client)
  