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>