summaryrefslogtreecommitdiff
path: root/example/websockets2/app/src/Websockets2.scala
diff options
context:
space:
mode:
Diffstat (limited to 'example/websockets2/app/src/Websockets2.scala')
-rw-r--r--example/websockets2/app/src/Websockets2.scala29
1 files changed, 29 insertions, 0 deletions
diff --git a/example/websockets2/app/src/Websockets2.scala b/example/websockets2/app/src/Websockets2.scala
new file mode 100644
index 0000000..b78bee3
--- /dev/null
+++ b/example/websockets2/app/src/Websockets2.scala
@@ -0,0 +1,29 @@
+package app
+
+import io.undertow.websockets.WebSocketConnectionCallback
+import io.undertow.websockets.core.{AbstractReceiveListener, BufferedTextMessage, WebSocketChannel, WebSockets}
+import io.undertow.websockets.spi.WebSocketHttpExchange
+
+object Websockets2 extends cask.MainRoutes{
+ @cask.websocket("/connect/:userName")
+ def showUserProfile(userName: String): cask.WebsocketResult = {
+ if (userName != "haoyi") cask.Response("", statusCode = 403)
+ else new WebSocketConnectionCallback() {
+ override def onConnect(exchange: WebSocketHttpExchange, channel: WebSocketChannel): Unit = {
+ channel.getReceiveSetter.set(
+ new AbstractReceiveListener() {
+ override def onFullTextMessage(channel: WebSocketChannel, message: BufferedTextMessage) = {
+ message.getData match{
+ case "" => channel.close()
+ case data => WebSockets.sendTextBlocking(userName + " " + data, channel)
+ }
+ }
+ }
+ )
+ channel.resumeReceives()
+ }
+ }
+ }
+
+ initialize()
+}