singleton demo

This commit is contained in:
David Botton 2020-12-30 20:05:48 -05:00
parent f2ae15534c
commit 58d30a60bc
4 changed files with 35 additions and 5 deletions

View file

@ -25,7 +25,7 @@
(let ((body (make-clog-body connection-id))) (let ((body (make-clog-body connection-id)))
(funcall *on-new-window* body))) (funcall *on-new-window* body)))
(defun initialize (on-new-window (defun initialize (on-new-window-handler
&key &key
(host "0.0.0.0") (host "0.0.0.0")
(port 8080) (port 8080)
@ -34,7 +34,7 @@
"Inititalze CLOG on a socket using HOST and PORT to serve BOOT-FILE as "Inititalze CLOG on a socket using HOST and PORT to serve BOOT-FILE as
the default route to establish web-socket connections and static files the default route to establish web-socket connections and static files
located at STATIC-ROOT." located at STATIC-ROOT."
(setf *on-new-window* on-new-window) (setf *on-new-window* on-new-window-handler)
(cc:initialize #'on-connect (cc:initialize #'on-connect
:host host :host host
@ -42,6 +42,13 @@ located at STATIC-ROOT."
:boot-file boot-file :boot-file boot-file
:static-root static-root)) :static-root static-root))
;;;;;;;;;;;;;;;;;;;;;;;
;; set-on-new-window ;;
;;;;;;;;;;;;;;;;;;;;;;;
(defun set-on-new-window (on-new-window-handler)
(setf *on-new-window* on-new-window-handler))
;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
;; shutdown ;; ;; shutdown ;;
;;;;;;;;;;;;;; ;;;;;;;;;;;;;;

View file

@ -38,8 +38,9 @@ application."
(defsection @clog-system (:title "CLOG System") (defsection @clog-system (:title "CLOG System")
"CLOG Startup and Shutdown" "CLOG Startup and Shutdown"
(initialize function) (initialize function)
(shutdown function)) (set-on-new-window function)
(shutdown function))
(defsection @clog-utilities (:title "CLOG Utilities") (defsection @clog-utilities (:title "CLOG Utilities")
"CLOG utilities" "CLOG utilities"

View file

@ -1,6 +1,6 @@
(defpackage #:clog-user (defpackage #:clog-user
(:use #:cl #:clog) (:use #:cl #:clog)
(:export hello)) (:export start-demo))
(in-package :clog-user) (in-package :clog-user)

22
demos/02-singleton.lisp Normal file
View file

@ -0,0 +1,22 @@
(defpackage #:clog-user
(:use #:cl #:clog)
(:export start-demo))
(in-package :clog-user)
(defun start-demo ()
"How to allow only one CLOG app to be executed. Normally many browsers can
can be started with the same app."
(clog:initialize
(lambda (win)
(let ((click-target (clog:create-child win "<h1>Hello World!</H1>")))
(clog:set-on-click click-target
(lambda ()
(clog:create-child win "<p>You Clicked me!</p>")))
(clog:set-on-new-window
(lambda (win)
(clog:put-br (clog:html-document win)
"Only single connection premitted."))))))
(clog:open-browser))