Commit 5c8edc40 by Bogdan Andjelkovic

live chat uradjen - back i front

parent 5aa65891
...@@ -11,4 +11,6 @@ import lombok.Setter; ...@@ -11,4 +11,6 @@ import lombok.Setter;
@NoArgsConstructor @NoArgsConstructor
public class Message { public class Message {
private String messageContent; private String messageContent;
private String from;
private String to;
} }
package com.example.SkuciSe.configuration.WebSocket; package com.example.SkuciSe.configuration.WebSocket;
import com.example.SkuciSe.model.korisnik.Korisnik; import com.example.SkuciSe.model.korisnik.Korisnik;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.annotation.SendToUser; import org.springframework.messaging.simp.annotation.SendToUser;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
...@@ -10,14 +11,16 @@ import java.security.Principal; ...@@ -10,14 +11,16 @@ import java.security.Principal;
@Controller @Controller
public class MessageController { public class MessageController {
@Autowired
private WSService service;
@MessageMapping("/private-message") @MessageMapping("/private-message")
@SendToUser("topic/private-messages") @SendToUser("topic/private-messages")
public ResponseMessage getPrivateMessage(final Message message, public ResponseMessage getPrivateMessage(final Message message,
final Principal principal)throws InterruptedException{ final Principal principal)throws InterruptedException{
Thread.sleep(1000); Thread.sleep(1000);
return new ResponseMessage(HtmlUtils.htmlEscape( message.setFrom( principal.getName());
"Sending private message to user " + principal.getName() + ": " service.notifyUser( message.getTo(), message);
+ message.getMessageContent()) return new ResponseMessage( HtmlUtils.htmlEscape(message.getFrom() + ": "+ message.getMessageContent()));
);
} }
} }
...@@ -15,6 +15,6 @@ public class WSController { ...@@ -15,6 +15,6 @@ public class WSController {
@PostMapping("/send-private-message/{mail}") @PostMapping("/send-private-message/{mail}")
public void sendPrivateMessage(@PathVariable("mail") final String mail, public void sendPrivateMessage(@PathVariable("mail") final String mail,
@RequestBody final Message message) { @RequestBody final Message message) {
service.notifyUser(mail, message.getMessageContent()); service.notifyUser(mail, message);
} }
} }
...@@ -13,8 +13,8 @@ public class WSService { ...@@ -13,8 +13,8 @@ public class WSService {
public WSService(SimpMessagingTemplate messagingTemplate) { public WSService(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate; this.messagingTemplate = messagingTemplate;
} }
public void notifyUser(final String mail, final String message) { public void notifyUser(final String mail, final Message message) {
ResponseMessage response = new ResponseMessage(message); ResponseMessage responseMessage = new ResponseMessage( message.getFrom() + " " + message.getMessageContent());
messagingTemplate.convertAndSendToUser(mail, "/topic/private-messages", response); messagingTemplate.convertAndSendToUser(mail, "/topic/private-messages", responseMessage);
} }
} }
\ No newline at end of file
...@@ -20,10 +20,10 @@ function connect() { ...@@ -20,10 +20,10 @@ function connect() {
} }
function showMessage(message) { function showMessage(message) {
$("#messages").append("<tr><td>" + message + "</td></tr>"); $("#messages").append("<tr><td>" +message+"</td></tr>");
} }
function sendPrivateMessage() { function sendPrivateMessage() {
console.log("sending private message"); console.log("sending private message");
stompClient.send("/ws/private-message", {}, JSON.stringify({'messageContent': $("#private-message").val()})); stompClient.send("/ws/private-message", {}, JSON.stringify({ 'from':"", 'to':$("#to").val(), 'messageContent': $("#private-message").val()}));
} }
\ No newline at end of file
...@@ -114,6 +114,8 @@ ...@@ -114,6 +114,8 @@
<div class="form-group"> <div class="form-group">
<label for="private-message">Private Message</label> <label for="private-message">Private Message</label>
<input type="text" id="private-message" class="form-control" placeholder="Enter your message here..."> <input type="text" id="private-message" class="form-control" placeholder="Enter your message here...">
<label for="private-message">To</label>
<input type="text" id="to" class="form-control" placeholder="Enter your message here...">
</div> </div>
<button id="send-private" class="btn btn-default" type="button">Send Private Message</button> <button id="send-private" class="btn btn-default" type="button">Send Private Message</button>
</form> </form>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment