- ((new-client websocket-client-loop))
- (websocket-handler #:init-keyword #:websocket-handler
- #:getter .websocket-handler))
+ ((ws-send websocket-server-send))
+ (upgrade-paths #:init-value `(("websocket" .
+ ,(wrap-apply websocket-client-loop)))
+ #:allocation #:each-subclass
+ #:accessor .upgrade-paths)
+
+ (gen-client-id #:init-thunk make-simple-counter)
+
+ ;; active websocket connections
+ (ws-clients #:init-thunk make-hash-table
+ #:accessor .ws-clients)
+
+ (on-ws-message #:init-keyword #:on-ws-message
+ #:getter .on-ws-message)
+ (on-ws-client-connect #:init-keyword #:on-ws-client-connect
+ #:init-value no-op
+ #:getter .on-ws-client-connect)
+ (on-ws-client-disconnect #:init-keyword #:on-ws-client-disconnect
+ #:init-value no-op
+ #:getter .on-ws-client-disconnect))
+
+(define (web-server-gen-client-id websocket-server)
+ ((slot-ref websocket-server 'gen-client-id)))