This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new bfdd9fb  [OPENMEETINGS-2186] chat should work in clustered mode
bfdd9fb is described below

commit bfdd9fbd96cb39dec698ceed79eb9c5e112365d7
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sun Mar 22 23:27:23 2020 +0700

    [OPENMEETINGS-2186] chat should work in clustered mode
---
 .../apache/openmeetings/core/util/ChatWebSocketHelper.java    |  6 +++---
 .../org/apache/openmeetings/core/util/WebSocketHelper.java    |  3 ++-
 .../java/org/apache/openmeetings/web/app/Application.java     | 11 ++++++++++-
 .../main/java/org/apache/openmeetings/web/room/raw-room.js    |  2 +-
 .../apache/openmeetings/web/room/wb/WbWebSocketHelper.java    |  7 ++++---
 .../java/org/apache/openmeetings/web/user/chat/raw-chat.js    |  5 ++++-
 .../src/main/webapp/WEB-INF/classes/hazelcast.xml             |  4 ++++
 7 files changed, 28 insertions(+), 10 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java
index aad82d3..631023b 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java
@@ -81,7 +81,7 @@ public class ChatWebSocketHelper extends WebSocketHelper {
                        .put("msg", arr);
        }
 
-       public static void send(IClusterWsMessage msg) {
+       public static boolean send(IClusterWsMessage msg) {
                if (msg instanceof WsMessageChat) {
                        if (msg instanceof WsMessageChat2User) {
                                WsMessageChat2User m = (WsMessageChat2User)msg;
@@ -93,9 +93,9 @@ public class ChatWebSocketHelper extends WebSocketHelper {
                                WsMessageChat m = (WsMessageChat)msg;
                                sendRoom(m.getChatMessage(), m.getMsg(), false);
                        }
-               } else {
-                       WebSocketHelper.send(msg);
+                       return true;
                }
+               return false;
        }
 
        public static void sendRoom(ChatMessage m, JSONObject msg) {
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
index 435b9b1..1584b36 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
@@ -95,7 +95,7 @@ public class WebSocketHelper {
                }
        }
 
-       public static void send(IClusterWsMessage msg) {
+       public static boolean send(IClusterWsMessage msg) {
                if (msg instanceof WsMessageRoomMsg) {
                        sendRoom(((WsMessageRoomMsg)msg).getMsg(), false);
                } else if (msg instanceof WsMessageRoomOthers) {
@@ -110,6 +110,7 @@ public class WebSocketHelper {
                } else if (msg instanceof WsMessageAll) {
                        sendAll(((WsMessageAll)msg).getMsg(), false);
                }
+               return true;
        }
 
        public static void sendRoom(final RoomMessage m) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 4c79637..9feace7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -45,6 +45,7 @@ import java.util.Set;
 import javax.websocket.WebSocketContainer;
 
 import org.apache.openmeetings.IApplication;
+import org.apache.openmeetings.core.util.ChatWebSocketHelper;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
@@ -200,8 +201,16 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                        if (serverId.equals(hazelcast.getName())) {
                                return;
                        }
-                       WbWebSocketHelper.send(msg.getMessageObject());
+                       IClusterWsMessage wsMsg = msg.getMessageObject();
+                       if (WbWebSocketHelper.send(wsMsg)) {
+                               return;
+                       }
+                       if (ChatWebSocketHelper.send(msg.getMessageObject())) {
+                               return;
+                       }
+                       WebSocketHelper.send(msg.getMessageObject());
                });
+               //FIXME TODO 
hazelcast.getConfig().getProperties().getProperty("server.url")
                hazelcast.getCluster().addMembershipListener(new 
MembershipListener() {
                        @Override
                        public void memberRemoved(MembershipEvent evt) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
index a903a13..a90158c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
@@ -327,7 +327,7 @@ var Room = (function() {
                __rightIcon(c, elem, ['WHITEBOARD', 'PRESENTER'], '.right.wb', 
() => !options.interview && $('.wb-area').is(':visible'));
                __rightIcon(c, elem, ['SHARE'], '.right.screen-share', () => 
true); //FIXME TODO getRoomPanel().screenShareAllowed()
                __rightIcon(c, elem, ['REMOTE_CONTROL'], 
'.right.remote-control', () => true); //FIXME TODO 
getRoomPanel().screenShareAllowed()
-               __rightIcon(c, elem, ['MODERRATOR'], '.right.moderator', () => 
true);
+               __rightIcon(c, elem, ['MODERATOR'], '.right.moderator', () => 
true);
        }
        function __setStatus(c, le) {
                const status = le.find('.user-status');
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index 16a7f4b..e337371 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -44,7 +44,7 @@ public class WbWebSocketHelper extends WebSocketHelper {
        public static final String PARAM_OBJ = "obj";
        private static final String PARAM__POSTER = "_poster";
 
-       public static void send(IClusterWsMessage _m) {
+       public static boolean send(IClusterWsMessage _m) {
                if (_m instanceof WsMessageWb) {
                        WsMessageWb m = (WsMessageWb)_m;
                        if (m.getUid() == null) {
@@ -52,12 +52,13 @@ public class WbWebSocketHelper extends WebSocketHelper {
                        } else {
                                sendWbOthers(m.getRoomId(), m.getMeth(), 
m.getObj(), m.getUid(), false);
                        }
+                       return true;
                } else if (_m instanceof WsMessageWbFile) {
                        WsMessageWbFile m = (WsMessageWbFile)_m;
                        sendWbFile(m.getRoomId(), m.getWbId(), m.getRoomUid(), 
m.getFile(), m.getFileItem(), false);
-               } else {
-                       WebSocketHelper.send(_m);
+                       return true;
                }
+               return false;
        }
 
        public static void sendWbAll(Long roomId, WbAction meth, JSONObject 
obj) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
index 292a1b2..1972f55 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
@@ -145,6 +145,7 @@ var Chat = function() {
                } else {
                        $('#chatTabs li a[aria-controls="' + id + 
'"]').tab('show');
                }
+               $('#activeChatTab').val(id).trigger('change');
        }
        function _reinit(opts) {
                userId = opts.userId;
@@ -164,7 +165,9 @@ var Chat = function() {
                initToolbar();
                tabs = $("#chatTabs");
                tabs.off().on('shown.bs.tab', function (e) {
-                       _scrollDown($('#' + $(e.target).attr('aria-controls')));
+                       const ct = $(e.target).attr('aria-controls');
+                       _scrollDown($('#' + ct));
+                       $('#activeChatTab').val(ct).trigger('change');
                });
                tabs.delegate(".btn.close-chat", "click", function() {
                        const panelId = 
$(this).closest("a").attr("aria-controls");
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
index ebb5119..a37da8b 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
@@ -79,4 +79,8 @@
                        <interface>192.168.1.*</interface>
                </interfaces>
        </network-->
+       <properties>
+               <property name="hazelcast.logging.type">slf4j</property>
+               <property 
name="server.url">https://myhost:myport/ctx</property> <!-- MAKE SURE THIS 
PUBLIC SERVER ADDRESS, USE IP with care: certificate may be not valid for IP -->
+       </properties>
 </hazelcast>

Reply via email to