summaryrefslogtreecommitdiff
path: root/cask/util/src-js/cask/util/WebsocketClientImpl.scala
diff options
context:
space:
mode:
Diffstat (limited to 'cask/util/src-js/cask/util/WebsocketClientImpl.scala')
-rw-r--r--cask/util/src-js/cask/util/WebsocketClientImpl.scala33
1 files changed, 33 insertions, 0 deletions
diff --git a/cask/util/src-js/cask/util/WebsocketClientImpl.scala b/cask/util/src-js/cask/util/WebsocketClientImpl.scala
new file mode 100644
index 0000000..f129893
--- /dev/null
+++ b/cask/util/src-js/cask/util/WebsocketClientImpl.scala
@@ -0,0 +1,33 @@
+package cask.util
+
+import org.scalajs.dom
+
+abstract class WebsocketClientImpl(url: String) extends WebsocketBase{
+ var websocket: dom.WebSocket = null
+ var closed = false
+ def connect(): Unit = {
+ websocket = new dom.WebSocket(url)
+
+ websocket.onopen = (e: dom.Event) => onOpen()
+ websocket.onmessage = (e: dom.MessageEvent) => onMessage(e.data.asInstanceOf[String])
+ websocket.onclose = (e: dom.CloseEvent) => {
+ closed = true
+ onClose(e.code, e.reason)
+ }
+ websocket.onerror = (e: dom.Event) => onError(new Exception(e.toString))
+ }
+ def onOpen(): Unit
+
+ def send(value: String) = try {
+ websocket.send(value)
+ true
+ } catch{case e: scala.scalajs.js.JavaScriptException => false}
+
+
+ def send(value: Array[Byte]) = ???
+ def onError(ex: Exception): Unit
+ def onMessage(value: String): Unit
+ def onClose(code: Int, reason: String): Unit
+ def close(): Unit = websocket.close()
+ def isClosed() = closed
+} \ No newline at end of file