blob: f12989366111c90213280d9eddacaa215221ec33 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
}
|