aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server/WebsocketManager.java
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2018-02-15 10:50:40 +0300
committerGravatar Vitaly Takmazov2018-02-15 10:50:40 +0300
commitf764bb226f0db20a4e4c2258f2304e93f1a47557 (patch)
tree961f9b0ae2e661ce1d688aa57a3588ed5b6f64d7 /juick-server/src/main/java/com/juick/server/WebsocketManager.java
parent775fead48969047e9770b325a3b6a25bbad35835 (diff)
server: handle messages from service ws user
Diffstat (limited to 'juick-server/src/main/java/com/juick/server/WebsocketManager.java')
-rw-r--r--juick-server/src/main/java/com/juick/server/WebsocketManager.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/juick-server/src/main/java/com/juick/server/WebsocketManager.java b/juick-server/src/main/java/com/juick/server/WebsocketManager.java
index 6e3fbea2..475fd8b6 100644
--- a/juick-server/src/main/java/com/juick/server/WebsocketManager.java
+++ b/juick-server/src/main/java/com/juick/server/WebsocketManager.java
@@ -17,6 +17,8 @@
package com.juick.server;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.juick.Message;
import com.juick.User;
import com.juick.server.helpers.AnonymousUser;
import com.juick.server.util.HttpBadRequestException;
@@ -28,10 +30,12 @@ import com.juick.service.UserService;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.PingMessage;
+import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import org.springframework.web.util.UriComponents;
@@ -58,10 +62,16 @@ public class WebsocketManager extends TextWebSocketHandler {
private MessagesService messagesService;
@Inject
private SubscriptionService subscriptionService;
+ @Value("${service_user:juick}")
+ private String serviceUser;
+ @Inject
+ private ObjectMapper jsonMapper;
+ @Inject
+ private ServerManager serverManager;
@Override
- public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+ public void afterConnectionEstablished(WebSocketSession session) {
URI hLocation;
String hXRealIP;
@@ -127,6 +137,22 @@ public class WebsocketManager extends TextWebSocketHandler {
}
+ @Override
+ protected void handleTextMessage(WebSocketSession session, TextMessage message) {
+ clients.stream().filter(c -> c.session.equals(session)).findFirst().ifPresent( c -> {
+ if (c.visitor.getName().equals(serviceUser)) {
+ try {
+ Message draft = jsonMapper.readValue(message.asBytes(), Message.class);
+ serverManager.processMessage(draft.getUser(), draft.getText(), draft.getAttachment().getUrl());
+ } catch (IOException e) {
+ throw new HttpBadRequestException();
+ }
+ } else {
+ throw new HttpForbiddenException();
+ }
+ });
+ }
+
@Scheduled(fixedRate = 30000)
public void ping() {
clients.forEach(c -> {