123456789101112131415161718192021222324252627282930313233343536373839 |
- (in-package :server)
- (defvar *music-connections* (make-hash-table))
- (defun handle-new-music-connection (con env)
- (setf (gethash con *music-connections*)
- (current-id env)))
- (defun broadcast-music-to-room (connection message)
- (declare (ignore connection))
- (loop :for con :being :the :hash-key :of *music-connections* :do
- (websocket-driver:send con message)))
- (defun handle-close-music-connection (connection)
- (remhash connection *music-connections*))
- (defun music-chat-server (env)
- (let ((ws (websocket-driver:make-server env)))
- (websocket-driver:on :open ws
- (lambda () (handle-new-music-connection ws env)))
- (websocket-driver:on :message ws
- (lambda (msg) (broadcast-music-to-room ws msg)))
- (websocket-driver:on :close ws
- (lambda (&key code reason)
- (declare (ignore code reason))
- (handle-close-music-connection ws)))
- (lambda (responder)
- (declare (ignore responder))
- (websocket-driver:start-connection ws))))
|