diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2019-09-16 22:32:39 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-16 22:32:39 +0800 |
commit | d22a0e75bded29a28529b87ed5ef9db2f6ae86c9 (patch) | |
tree | ed8248ed943327f6011309a10ef6b03a1025ab9f /cask/util/src-jvm/cask/util/WebsocketClientImpl.scala | |
parent | b83eec01c8db8a8aa499d6c498ff85987005fe83 (diff) | |
parent | bfe26d5a9705011359658c45b364e9b65ce697b5 (diff) | |
download | cask-d22a0e75bded29a28529b87ed5ef9db2f6ae86c9.tar.gz cask-d22a0e75bded29a28529b87ed5ef9db2f6ae86c9.tar.bz2 cask-d22a0e75bded29a28529b87ed5ef9db2f6ae86c9.zip |
Merge pull request #14 from lihaoyi-databricks/master
Provide a simple builtin websocket client in `cask.WsClient`
Diffstat (limited to 'cask/util/src-jvm/cask/util/WebsocketClientImpl.scala')
-rw-r--r-- | cask/util/src-jvm/cask/util/WebsocketClientImpl.scala | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/cask/util/src-jvm/cask/util/WebsocketClientImpl.scala b/cask/util/src-jvm/cask/util/WebsocketClientImpl.scala new file mode 100644 index 0000000..5570356 --- /dev/null +++ b/cask/util/src-jvm/cask/util/WebsocketClientImpl.scala @@ -0,0 +1,39 @@ +package cask.util +import org.java_websocket.client.WebSocketClient +import org.java_websocket.handshake.ServerHandshake + +abstract class WebsocketClientImpl(url: String) extends WebsocketBase{ + var websocket: Client = null + + def connect(): Unit = { + websocket = new Client() + websocket.connect() + } + def onOpen(): Unit + def onMessage(message: String): Unit + def send(message: String) = try{ + websocket.send(message) + true + }catch{ + case e: org.java_websocket.exceptions.WebsocketNotConnectedException => false + } + def send(message: Array[Byte]) = try{ + websocket.send(message) + true + }catch{ + case e: org.java_websocket.exceptions.WebsocketNotConnectedException => false + } + def onClose(code: Int, reason: String): Unit + def onError(ex: Exception): Unit + def close(): Unit = websocket.close() + def isClosed() = websocket.isClosed() + class Client() extends WebSocketClient(new java.net.URI(url)){ + def onOpen(handshakedata: ServerHandshake) = { + WebsocketClientImpl.this.onOpen() + } + def onMessage(message: String) = WebsocketClientImpl.this.onMessage(message) + def onClose(code: Int, reason: String, remote: Boolean) = WebsocketClientImpl.this.onClose(code, reason) + def onError(ex: Exception) = WebsocketClientImpl.this.onError(ex) + + } +}
\ No newline at end of file |