
On Mar 1, 2014, at 2:01 PM, Ben Hyde <bhyde@pobox.com> wrote:
On Mar 1, 2014, at 3:04 PM, Ron Garret <ron@flownet.com> wrote:
server-side events
I assume, you cobbled together your own Hunchentoot compatible implementation? Or, is there one kicking about I've not noticed? - ben
Here’s a self-contained SSE demo: (require :hunchentoot) (rename-package :hunchentoot :hunchentoot '(:tbnl :ht)) (defvar $server (make-instance 'ht::easy-acceptor :port 1234 :access-log-destination nil)) (ht:start $server) (ht:define-easy-handler (sse-test :uri "/sse-test") () "<script> var source=new EventSource('sse-stream'); source.onmessage=function(event) { document.getElementById('result').innerHTML=event.data + '<br>'; }; </script> Server-side event demo<br> <div id=result></div> ") (defun set-header (name value) (setf (ht:header-out name) value)) (ht:define-easy-handler (sse-stream :uri "/sse-stream") () (set-header "content-type" "text/event-stream") (set-header "cache-control" "no-cache") (let ((stream (ht:send-headers))) (dotimes (i 10) (write-sequence (encode-string-to-octets (format nil "data: test ~A~A~A" i #\newline #\newline)) stream) (force-output stream) (sleep 0.5))))