summaryrefslogtreecommitdiff
path: root/cask/util/src-jvm/cask/util/WebsocketClientImpl.scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2019-09-16 22:32:39 +0800
committerGitHub <noreply@github.com>2019-09-16 22:32:39 +0800
commitd22a0e75bded29a28529b87ed5ef9db2f6ae86c9 (patch)
treeed8248ed943327f6011309a10ef6b03a1025ab9f /cask/util/src-jvm/cask/util/WebsocketClientImpl.scala
parentb83eec01c8db8a8aa499d6c498ff85987005fe83 (diff)
parentbfe26d5a9705011359658c45b364e9b65ce697b5 (diff)
downloadcask-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.scala39
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