diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationMessage.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationMessage.java index 318aceb2ee29fb7db7c3890649e4950b7484f82e..71f2fa11db7adbea4dc49b90f7f0e74b08cc8546 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationMessage.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationMessage.java @@ -3,6 +3,7 @@ package unipotsdam.gf.modules.annotation.model; public class AnnotationMessage { // variables private String from; + private String targetId; private AnnotationMessageType type; private String annotationId; @@ -20,6 +21,14 @@ public class AnnotationMessage { this.from = from; } + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + public AnnotationMessageType getType() { return type; } @@ -40,6 +49,7 @@ public class AnnotationMessage { public String toString() { return "AnnotationMessage{" + "from='" + from + '\'' + + ", targetId='" + targetId + '\'' + ", type=" + type + ", annotationId='" + annotationId + '\'' + '}'; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java index 7ee970ab5098f91dca49ae508f7b3762fdeb77d4..29c2d3f61ebc6da8e99be59dfdff206c8e1810b0 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java @@ -29,7 +29,8 @@ public class AnnotationWebSocketEndpoint { @OnMessage public void onMessage(Session session, AnnotationMessage annotationMessage) throws IOException, EncodeException { - annotationMessage.setFrom(targets.get(session.getId())); + annotationMessage.setTargetId(targets.get(session.getId())); + annotationMessage.setFrom(session.getId()); broadcast(annotationMessage); } @@ -48,7 +49,9 @@ public class AnnotationWebSocketEndpoint { endpoints.forEach(endpoint -> { synchronized (endpoint) { try { - if (targets.get(endpoint.session.getId()).equals(annotationMessage.getFrom())) { + if (targets.get(endpoint.session.getId()).equals(annotationMessage.getTargetId()) + && !endpoint.session.getId().equals(annotationMessage.getFrom())) { + System.out.println("Send message to session" + endpoint.session.getId() + " from session " + annotationMessage.getFrom()); endpoint.session.getBasicRemote().sendObject(annotationMessage); } } diff --git a/gemeinsamforschen/src/main/webapp/assets/js/annotationScript.js b/gemeinsamforschen/src/main/webapp/assets/js/annotationScript.js index 1dc1882e354e6fede09e400125cec30b378a00d4..314be7c057375ddb14dd780a720fd593508f50d2 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/annotationScript.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/annotationScript.js @@ -166,6 +166,8 @@ $(document).ready(function() { // delte annotation from server and from list deleteAnnotation(id, function () { + // send delete request to websocket + send("DELETE", id); // remove annotation from list $('#' + id).closest('.listelement').remove() // remove highlighted text @@ -531,6 +533,8 @@ function saveNewAnnotation(title, comment, startCharacter, endCharacter) { // send new annotation to back-end and display it in list createAnnotation(annotationPostRequest, function(response) { + // send new annotation to websocket + send("GET", response.id); // display the new annotation displayAnnotation(response); diff --git a/gemeinsamforschen/src/main/webapp/assets/js/annotationWebsocket.js b/gemeinsamforschen/src/main/webapp/assets/js/annotationWebsocket.js index 6b7410de06e9ddd050e07abe2e0ea7aba1f2c2ad..331b8b2f624deb54255ab2f3fc71a7d23cffac16 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/annotationWebsocket.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/annotationWebsocket.js @@ -9,6 +9,18 @@ function connect(targetId) { ws.onmessage = function (e) { var message = JSON.parse(e.data); console.log(message.from) + + if (message.type === "GET") { + // get annotation from server + getAnnotation(message.annotationId, function (response) { + // display annotation + displayAnnotation(response) + }) + } + else if (message.type === "DELETE") { + // remove annotation from list + $('#' + message.annotationId).closest('.listelement').remove() + } }; }