Add server announcements
This commit is contained in:
parent
faf3b85638
commit
b21f118600
@ -2,6 +2,8 @@ package lingo.client.api;
|
|||||||
|
|
||||||
public class StompTopics {
|
public class StompTopics {
|
||||||
|
|
||||||
|
public static final String CHAT = createTopicName("chat");
|
||||||
|
|
||||||
public static final String OPPONENT_JOINED = createTopicName("opponentJoined");
|
public static final String OPPONENT_JOINED = createTopicName("opponentJoined");
|
||||||
|
|
||||||
public static final String OPPONENT_LEFT = createTopicName("opponentLeft");
|
public static final String OPPONENT_LEFT = createTopicName("opponentLeft");
|
||||||
|
@ -89,6 +89,7 @@ public class LingoController implements ApplicationListener<AbstractSubProtocolE
|
|||||||
public void join(String username, @Header(SESSION_ID_HEADER) String sessionId) {
|
public void join(String username, @Header(SESSION_ID_HEADER) String sessionId) {
|
||||||
log.info("Player joined: {}, {}", sessionId, username);
|
log.info("Player joined: {}, {}", sessionId, username);
|
||||||
usernameBySession.put(sessionId, username);
|
usernameBySession.put(sessionId, username);
|
||||||
|
sendAnnouncement(username + " joined");
|
||||||
joinWaitingList(sessionId);
|
joinWaitingList(sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +103,10 @@ public class LingoController implements ApplicationListener<AbstractSubProtocolE
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void leave(String sessionId) {
|
private void leave(String sessionId) {
|
||||||
usernameBySession.remove(sessionId);
|
final String username = usernameBySession.remove(sessionId);
|
||||||
|
if (username != null) {
|
||||||
|
sendAnnouncement(username + " left");
|
||||||
|
}
|
||||||
final Game game = gameBySession.remove(sessionId);
|
final Game game = gameBySession.remove(sessionId);
|
||||||
if (game == null) {
|
if (game == null) {
|
||||||
leaveWaitingList(sessionId);
|
leaveWaitingList(sessionId);
|
||||||
@ -180,6 +184,12 @@ public class LingoController implements ApplicationListener<AbstractSubProtocolE
|
|||||||
sendToUser(sessionId, StompTopics.PRACTICE_REPORTS, report);
|
sendToUser(sessionId, StompTopics.PRACTICE_REPORTS, report);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendAnnouncement(String message) {
|
||||||
|
final String source = "[Server]";
|
||||||
|
final ChatMessage payload = new ChatMessage(source, message);
|
||||||
|
messagingTemplate.convertAndSend(StompTopics.CHAT, payload);
|
||||||
|
}
|
||||||
|
|
||||||
private void sendToUser(String user, String destination, Object payload) {
|
private void sendToUser(String user, String destination, Object payload) {
|
||||||
// TODO: cache the headers?
|
// TODO: cache the headers?
|
||||||
final SimpMessageHeaderAccessor headerAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE);
|
final SimpMessageHeaderAccessor headerAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE);
|
||||||
@ -222,6 +232,7 @@ public class LingoController implements ApplicationListener<AbstractSubProtocolE
|
|||||||
final String[] playerTwoMessage = new String[] { firstLetter, playerOneUsername };
|
final String[] playerTwoMessage = new String[] { firstLetter, playerOneUsername };
|
||||||
sendToUser(playerOne, StompTopics.OPPONENT_JOINED, playerOneMessage);
|
sendToUser(playerOne, StompTopics.OPPONENT_JOINED, playerOneMessage);
|
||||||
sendToUser(playerTwo, StompTopics.OPPONENT_JOINED, playerTwoMessage);
|
sendToUser(playerTwo, StompTopics.OPPONENT_JOINED, playerTwoMessage);
|
||||||
|
sendAnnouncement(playerOneUsername + " is playing against " + playerTwoUsername);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,6 +137,9 @@ function addChatMessage(sender, body) {
|
|||||||
chatMessage.appendChild(usernameNode);
|
chatMessage.appendChild(usernameNode);
|
||||||
chatMessage.appendChild(messageTextNode);
|
chatMessage.appendChild(messageTextNode);
|
||||||
messageList.appendChild(chatMessage);
|
messageList.appendChild(chatMessage);
|
||||||
|
|
||||||
|
// Auto-scroll if necessary
|
||||||
|
messageList.scrollTop = messageList.scrollHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawMyBoard() {
|
function drawMyBoard() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user