Skip to content
Snippets Groups Projects
Commit d11ed0b8 authored by Hoai Viet Nguyen's avatar Hoai Viet Nguyen
Browse files

add echo_handler and simple chat

parent 80c989f5
Branches echo_handler_and_simple_chat_demo_video
No related tags found
No related merge requests found
...@@ -26,6 +26,7 @@ dependencies { ...@@ -26,6 +26,7 @@ dependencies {
implementation 'org.jetbrains.kotlin:kotlin-reflect' implementation 'org.jetbrains.kotlin:kotlin-reflect'
testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit5' testImplementation 'org.jetbrains.kotlin:kotlin-test-junit5'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
} }
......
package de.thk.gm.websocketsdemo.configs
import de.thk.gm.websocketsdemo.handlers.EchoHandler
import de.thk.gm.websocketsdemo.handlers.SimpleChatHandler
import org.springframework.context.annotation.Configuration
import org.springframework.web.socket.WebSocketHandler
import org.springframework.web.socket.config.annotation.EnableWebSocket
import org.springframework.web.socket.config.annotation.WebSocketConfigurer
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry
@Configuration
@EnableWebSocket
class WebSocketsConfig(): WebSocketConfigurer {
override fun registerWebSocketHandlers(registry: WebSocketHandlerRegistry) {
registry.addHandler(EchoHandler(), "/echo").setAllowedOrigins("*")
registry.addHandler(SimpleChatHandler(), "/chat")
}
}
\ No newline at end of file
package de.thk.gm.websocketsdemo.handlers
import org.springframework.web.socket.TextMessage
import org.springframework.web.socket.WebSocketSession
import org.springframework.web.socket.handler.TextWebSocketHandler
class EchoHandler : TextWebSocketHandler() {
override fun handleTextMessage(session: WebSocketSession, message: TextMessage) {
session.sendMessage(message)
}
}
\ No newline at end of file
package de.thk.gm.websocketsdemo.handlers
import org.springframework.web.socket.CloseStatus
import org.springframework.web.socket.TextMessage
import org.springframework.web.socket.WebSocketSession
import org.springframework.web.socket.handler.TextWebSocketHandler
class SimpleChatHandler : TextWebSocketHandler() {
private var sessions: ArrayList<WebSocketSession> = ArrayList()
override fun afterConnectionEstablished(session: WebSocketSession) {
sessions.add(session)
}
override fun handleTextMessage(session: WebSocketSession, message: TextMessage) {
for (session in sessions) {
session.sendMessage(message)
}
}
override fun afterConnectionClosed(session: WebSocketSession, status: CloseStatus) {
sessions.remove(session)
}
}
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Echo Demo</title>
</head>
<body>
<h1>Echo Demo</h1>
<input type="text" id="message">
<button type="button" onclick="sendMessage()">Send</button>
<div id="echo"></div>
<script>
var ws = new WebSocket("/echo")
ws.onopen = function (event) {
alert("WebSocket successfully established")
}
function sendMessage(){
var message = document.getElementById("message").value
ws.send(message)
}
ws.onmessage = function (message) {
echo.innerHTML += "<p>" + message.data + "</p>"
}
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Simple Chat</title>
</head>
<body>
<h1>Simple Chat</h1>
<input type="text" id="username" placeholder="username">
<input type="text" id="text" placeholder="message">
<br>
<button onclick="sendMessage()">Send</button>
<div id="chat"></div>
<script>
var ws = new WebSocket("/chat")
var chat = document.getElementById("chat")
var message = {}
function sendMessage(){
message.username = document.getElementById("username").value
message.text = document.getElementById("text").value
ws.send(JSON.stringify(message))
}
ws.onmessage = function (msg) {
message = JSON.parse(msg.data)
chat.innerHTML += "<p><b>"+message.username+":</b>" + message.text + "</p>"
}
</script>
</body>
</html>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment