diff --git a/build.gradle b/build.gradle index c25ceac9..c209c3a7 100644 --- a/build.gradle +++ b/build.gradle @@ -64,6 +64,8 @@ dependencies { //aws implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' + //타임리프 + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' } tasks.named('test') { diff --git a/src/main/java/com/sptp/backend/home/HomeController.java b/src/main/java/com/sptp/backend/home/HomeController.java new file mode 100644 index 00000000..be99b117 --- /dev/null +++ b/src/main/java/com/sptp/backend/home/HomeController.java @@ -0,0 +1,27 @@ +package com.sptp.backend.home; + +import com.sptp.backend.member.service.MemberService; +import com.sptp.backend.member.web.dto.request.MemberLoginRequestDto; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; + +@Controller +@RequiredArgsConstructor +public class HomeController { + + private final MemberService memberService; + private final PasswordEncoder passwordEncoder; + + @PostMapping("/login") + public String login(String username, String password) { + System.out.println(username + " " + password); + memberService.login(MemberLoginRequestDto.builder() + .userId(username) + .password(password) + .build()); + + return "redirect:/index"; + } +} diff --git a/src/main/resources/static/app.js b/src/main/resources/static/app.js new file mode 100644 index 00000000..dd1ceaa8 --- /dev/null +++ b/src/main/resources/static/app.js @@ -0,0 +1,50 @@ +var stompClient = null; + +function setConnected(connected) { + $("#connect").prop("disabled", connected); + $("#disconnect").prop("disabled", !connected); + if (connected) { + $("#conversation").show(); + } + else { + $("#conversation").hide(); + } + $("#greetings").html(""); +} + +function connect() { + var socket = new SockJS('/ws-connection'); + stompClient = Stomp.over(socket); + stompClient.connect({}, function (frame) { + setConnected(true); + console.log('Connected: ' + frame); + stompClient.subscribe('/topic/greetings', function (greeting) { + showGreeting(JSON.parse(greeting.body).content); + }); + }); +} + +function disconnect() { + if (stompClient !== null) { + stompClient.disconnect(); + } + setConnected(false); + console.log("Disconnected"); +} + +function sendName() { + stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()})); +} + +function showGreeting(message) { + $("#greetings").append("" + message + ""); +} + +$(function () { + $("form").on('submit', function (e) { + e.preventDefault(); + }); + $( "#connect" ).click(function() { connect(); }); + $( "#disconnect" ).click(function() { disconnect(); }); + $( "#send" ).click(function() { sendName(); }); +}); \ No newline at end of file diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html new file mode 100644 index 00000000..b58f37fa --- /dev/null +++ b/src/main/resources/static/index.html @@ -0,0 +1,53 @@ + + + + Hello WebSocket + + + + + + + + + +
+
+
+
+
+ + + +
+
+
+
+
+
+ + +
+ +
+
+
+
+
+ + + + + + + + +
Greetings
+
+
+
+ + \ No newline at end of file