diff --git a/deps.edn b/deps.edn index 71aab18..f89bc54 100644 --- a/deps.edn +++ b/deps.edn @@ -18,6 +18,7 @@ :extra-deps {org.clojure/test.check {:mvn/version "1.1.1"} less-awful-ssl/less-awful-ssl {:mvn/version "1.0.6"} eftest/eftest {:mvn/version "0.6.0"} + stylefruits/gniazdo {:mvn/version "1.2.2"} clj-http/clj-http {:mvn/version "3.12.0"}}} :project {:extra-deps {io.github.exoscale/tools.project {:git/sha "4ad527fac7bdc24f649404205ca31754339f856d"}} diff --git a/src/s_exp/mina/websocket/response.clj b/src/s_exp/mina/websocket.clj similarity index 74% rename from src/s_exp/mina/websocket/response.clj rename to src/s_exp/mina/websocket.clj index 55fb237..b9bc14d 100644 --- a/src/s_exp/mina/websocket/response.clj +++ b/src/s_exp/mina/websocket.clj @@ -1,4 +1,4 @@ -(ns s-exp.mina.websocket.response +(ns s-exp.mina.websocket (:import (io.helidon.common.buffers BufferData) (io.helidon.websocket WsSession))) @@ -19,7 +19,7 @@ clojure.lang.Sequential (buffer-data [s] - (BufferData/create s)) + (BufferData/create ^java.util.List s)) BufferData (buffer-data [bd] @@ -30,9 +30,13 @@ (BufferData/empty))) (defn send! - [^WsSession ws-session data last] - (.send ws-session (buffer-data data) - (boolean last))) + [^WsSession ws-session msg last?] + (if (string? msg) + (.send ws-session ^String msg + (boolean last?)) + (.send ws-session + ^BufferData (buffer-data msg) + (boolean last?)))) (defn ping! [^WsSession ws-session data] diff --git a/src/s_exp/mina/websocket/listener.clj b/src/s_exp/mina/websocket/listener.clj index c9e2b29..3293736 100644 --- a/src/s_exp/mina/websocket/listener.clj +++ b/src/s_exp/mina/websocket/listener.clj @@ -2,6 +2,8 @@ (:import (io.helidon.common.buffers BufferData) (io.helidon.http Headers) (io.helidon.http HttpPrologue) + (io.helidon.http WritableHeaders) + (io.helidon.webserver.websocket WsUpgrader) (io.helidon.websocket WsListener WsSession) (java.util Optional))) @@ -16,8 +18,13 @@ close (constantly nil) error (constantly nil) open (constantly nil) - http-upgrade (constantly (Optional/empty))}}] + http-upgrade (fn [^HttpPrologue _http-prologue + ^Headers headers] + (Optional/of headers))}}] + (reify WsListener + (^void onMessage [_ ^WsSession session ^String data ^boolean last?] + (message session data last?)) (^void onMessage [_ ^WsSession session ^BufferData data ^boolean last?] (message session data last?)) (^void onPing [_ ^WsSession session ^BufferData data] @@ -32,4 +39,3 @@ (open session)) (^Optional onHttpUpgrade [_ ^HttpPrologue http-prologue ^Headers headers] (http-upgrade http-prologue headers)))) - diff --git a/test/s_exp/mina_test.clj b/test/s_exp/mina_test.clj index d1f31bd..b1b8f48 100644 --- a/test/s_exp/mina_test.clj +++ b/test/s_exp/mina_test.clj @@ -1,13 +1,13 @@ (ns s-exp.mina-test (:require [clj-http.client :as client] [clojure.string :as str] - [clojure.test :refer :all] + [clojure.test :refer [deftest is]] [less.awful.ssl :as ls] [s-exp.mina :as m]) (:import (io.helidon.common.tls Tls TlsClientAuth) (io.helidon.common.tls TlsConfig))) -(def ^:dynamic *endpoint*) +(def ^:dynamic *endpoint* nil) (defn status-ok? [response] (some-> response :status (= 200)))