git » jacl.git » master » tree

[master] / jacl-client / src / main / abcl / client.lisp

(require :abcl-contrib)
(require :jss)

(defpackage #:jacl-client
  (:use :cl)
  (:import-from #:java jinterface-implementation))

(in-package #:jacl-client)

(defun make-listener ()
  (jinterface-implementation
   "java.net.http.WebSocket$Listener"
   "onBinary"
   (lambda (ws data last)
     (error "onBinary: Unimplemented"))
   "onClose"
   (lambda (ws code reason)
     (error "onClose: Unimplemented"))
   "onError"
   (lambda (ws err)
     (error "onError: Unimplemented"))
   "onOpen"
   (lambda (ws)
     (error "onOpen: Unimplemented"))
   "onPing"
   (lambda (ws msg)
     (error "onPing: Unimplemented"))
   "onPong"
   (lambda (ws msg)
     (error "onPong: Unimplemented"))
   "onText"
   (lambda (ws data last)
     (error "onText: Unimplemented"))))

(defun make-websocket (url)
  (let* ((http-client (#"newHttpClient" 'java.net.http.HttpClient))
         (ws-builder (#"newWebSocketBuilder" http-client))
         (uri (#"create" 'java.net.URI url))
         (listener (make-listener)))
    (#"buildAsync" ws-builder uri listener)))