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

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


The following commit(s) were added to refs/heads/4.0.x by this push:
     new 4566d7d  [OPENMEETINGS-1836] more work on performance: micActivity
4566d7d is described below

commit 4566d7d9aa88ff519aeecc50f9a0f66a1891edef
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Fri Mar 30 00:28:55 2018 +0700

    [OPENMEETINGS-1836] more work on performance: micActivity
---
 .../core/remote/ScopeApplicationAdapter.java       |  7 ++++--
 .../openmeetings/db/manager/IClientManager.java    |  1 +
 .../openmeetings/db/util/ws/RoomMessage.java       |  1 -
 .../apache/openmeetings/web/app/ClientManager.java |  8 +++++++
 .../apache/openmeetings/web/room/RoomPanel.java    | 13 -----------
 .../org/apache/openmeetings/web/room/room-base.js  |  3 +++
 .../apache/openmeetings/web/room/video-manager.js  | 25 +++++++++++++++++++++-
 .../src/main/webapp/WEB-INF/classes/hazelcast.xml  |  2 +-
 8 files changed, 42 insertions(+), 18 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
index 000e74a..2279c28 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
@@ -942,8 +942,11 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
        public void micActivity(boolean active) {
                IConnection current = Red5.getConnectionLocal();
                StreamClient client = 
streamClientManager.get(IClientUtil.getId(current.getClient()));
-               WebSocketHelper.sendRoom(new 
TextRoomMessage(client.getRoomId(), client, RoomMessage.Type.audioActivity
-                               , new JSONObject().put("sid", 
client.getSid()).put("active", active).toString()));
+               WebSocketHelper.sendRoom(client.getRoomId(), new JSONObject()
+                               .put("type", "mic")
+                               .put("id", "activity")
+                               .put("uid", 
clientManager.uidBySid(client.getSid()))
+                               .put("active", active));
        }
 
        /*
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IClientManager.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IClientManager.java
index 037e4e6..5535ecc 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IClientManager.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IClientManager.java
@@ -28,6 +28,7 @@ import org.apache.openmeetings.db.entity.basic.IClient;
 public interface IClientManager {
        Client get(String uid);
        Client getBySid(String sid);
+       String uidBySid(String sid);
        List<Client> listByRoom(Long roomId);
        Collection<Client> listByUser(Long userId);
        Client update(Client c);
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
index 3c57781..5bd5b79 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
@@ -55,7 +55,6 @@ public class RoomMessage implements IWebSocketPushMessage {
                , kick
                , newStream
                , closeStream
-               , audioActivity //user speaks
                , mute
                , exclusive
                , quickPollUpdated
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index 4987fe3..bde1a40 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -118,6 +118,14 @@ public class ClientManager implements IClientManager {
                return uid == null ? null : get(uid);
        }
 
+       @Override
+       public String uidBySid(String sid) {
+               if (sid == null) {
+                       return null;
+               }
+               return mapBySid().get(sid);
+       }
+
        public void exitRoom(IClient c) {
                Long roomId = c.getRoomId();
                removeFromRoom(c);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 23ac29c..1fc8626 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -581,19 +581,6 @@ public class RoomPanel extends BasePanel {
                                                        }
                                                }
                                                break;
-                                       case audioActivity:
-                                       {
-                                               JSONObject obj = new 
JSONObject(((TextRoomMessage)m).getText());
-                                               Client c = 
cm.getBySid(obj.getString("sid"));
-                                               if (c == null) {
-                                                       log.error("Not existing 
user in audioActivity {} !!!!", obj);
-                                                       return;
-                                               }
-                                               if 
(!_c.getUid().equals(c.getUid())) {
-                                                       
handler.appendJavaScript(String.format("if (typeof(VideoManager) !== 
'undefined') {VideoManager.micActivity('%s', %s);}", c.getUid(), 
obj.getBoolean("active")));
-                                               }
-                                       }
-                                               break;
                                        case mute:
                                        {
                                                JSONObject obj = new 
JSONObject(((TextRoomMessage)m).getText());
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
index d89c851..c575f5c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
@@ -180,6 +180,9 @@ var Room = (function() {
                if (typeof(VideoSettings) !== 'undefined') {
                        VideoSettings.close();
                }
+               if (typeof(VideoManager) === 'object') {
+                       VideoManager.destroy();
+               }
                $('.ui-dialog.user-video').remove();
                $(window).off('keyup', _keyHandler);
                $(document).off('click', _mouseHandler);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
index e3c451a..4e571ae 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js
@@ -3,7 +3,28 @@ var VideoManager = (function() {
        const self = {};
        let share, inited = false;
 
+       function _onWsMessage(jqEvent, msg) {
+               try {
+                       if (msg instanceof Blob) {
+                               return; //ping
+                       }
+                       const m = jQuery.parseJSON(msg);
+                       if (m && 'mic' === m.type) {
+                               switch (m.id) {
+                                       case 'activity':
+                                               _micActivity(m.uid, m.active);
+                                               onBroadcast(m);
+                                               break;
+                                       default:
+                                               //no-op
+                               }
+                       }
+               } catch (err) {
+                       //no-op
+               }
+       }
        function _init() {
+               Wicket.Event.subscribe("/websocket/message", _onWsMessage);
                VideoSettings.init(Room.getOptions());
                share = $('.room.box').find('.icon.shared.ui-button');
                inited = true;
@@ -157,10 +178,12 @@ var VideoManager = (function() {
        self.play = _play;
        self.close = _close;
        self.securityMode = function(uid, on) { $('#' + 
VideoUtil.getVid(uid)).data().securityMode(on); };
-       self.micActivity = _micActivity;
        self.refresh = _refresh;
        self.mute = _mute;
        self.clickExclusive = _clickExclusive;
        self.exclusive = _exclusive;
+       self.destroy = function() {
+               Wicket.Event.unsubscribe("/websocket/message", _onWsMessage);
+       }
        return self;
 })();
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 57cd2e4..c0a965b 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
@@ -25,7 +25,7 @@
        >
        <map name="ONLINE_USERS_KEY">
                <near-cache>
-                       <eviction-policy>NONE</eviction-policy>
+                       <eviction eviction-policy="NONE"/>
                        <in-memory-format>OBJECT</in-memory-format>
                        <cache-local-entries>true</cache-local-entries>
                </near-cache>

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to