anchor.diff:    (let* ((action-obj (jsown:parse message))
            (action (cdr (assoc "action" (cdr action-obj) :test #'string=)))
            (dialogue (cdr (assoc "dialogue" (cdr action-obj) :test #'string=)))
  -         (user-action (add-user-action (client-username res client) action dialogue)))
  -    (loop for (c session nil nil) in (slot-value res 'clients)
  -       when session
  +         (user-action (add-user-action (client-username client) action dialogue)))
  +    (loop for (nil . session) in (session-db *server*)
  +       for c = (session-value 'websocket-client session)
  +       when c
          do (ws:write-to-client c (with-yaclml-output-to-string
                                     (render-user-action user-action))))))
   
  
positive.code: ;; * group actions and dialog by user.
  ;; * Use (CONT'D.)
  
  ;; WebSockets
  ;; * Figure out how to validate http sessions vs websocket connections.  This can possibly be done
  ;;   by grabbing the hunchentoot cookie from the websocket, sending the user-agent in through the
  ;;   onopen() event, and then reconstructing a request object and passing it to HT's
  ;;   validate-session. http://paste.lisp.org/display/120622
  ;;
  ;; clws issues
  ;; * Doesn't work on CCL.
  ;; * client accessors aren't exported.
  
negative.code: 
  (defmethod ws:resource-received-frame ((res chat-server) client message)
    (format t "~&Received resource frame.~%")
    (if (client-session client)
        (process-client-message res client message)
        (validate-client res client message)))
  
  