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 379283f  [OPENMEETINGS-1649] more work on turn support
379283f is described below

commit 379283f8d5a8beceb7c50fc6577b7e352899ec17
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Fri Oct 5 17:49:08 2018 +0700

    [OPENMEETINGS-1649] more work on turn support
---
 .../apache/openmeetings/core/remote/KStream.java   |  1 +
 .../openmeetings/core/remote/KurentoHandler.java   |  5 +++++
 .../org/apache/openmeetings/util/OmFileHelper.java |  3 +--
 .../apache/openmeetings/web/room/RoomPanel.java    |  8 ++++++-
 .../openmeetings/web/room/raw-video-manager.js     | 25 ++++++++++++----------
 .../org/apache/openmeetings/web/room/raw-video.js  | 24 +++++++++++----------
 6 files changed, 41 insertions(+), 25 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
index 835cb6a..7cc0df5 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
@@ -89,6 +89,7 @@ public class KStream implements IKStream {
                WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, 
RoomMessage.Type.rightUpdated, c.getUid()));
                WebSocketHelper.sendRoomOthers(roomId, uid, newKurentoMsg()
                                .put("id", "newStream")
+                               .put("iceServers", h.getTurnServers())
                                .put("client", c.toJson(false).put("type", 
"room"))); // FIXME TODO add multi-stream support
                return this;
        }
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
index 12fac99..15da866 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
@@ -259,6 +259,7 @@ public class KurentoHandler {
                                                .put("id", "broadcast")
                                                .put("uid", sd.getUid())
                                                .put("stream", new 
JSONObject(sd))
+                                               .put("iceServers", 
getTurnServers(false))
                                                .put("client", 
c.toJson(true).put("type", "room"))); // FIXME TODO add multi-stream support
                                //FIXME TODO update interview buttons
                        } else {
@@ -383,6 +384,10 @@ public class KurentoHandler {
                return r;
        }
 
+       public JSONArray getTurnServers() {
+               return getTurnServers(false);
+       }
+
        private JSONArray getTurnServers(final boolean test) {
                JSONArray arr = new JSONArray();
                if (!Strings.isEmpty(turnUrl)) {
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
index 8a29957..482ba40 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -180,8 +180,7 @@ public class OmFileHelper {
        }
 
        public static File getStreamsDir() {
-               //FIXME TODO return getDir(OmFileHelper.omHome, STREAMS_DIR);
-               return new File(System.getProperty("java.io.tmpdir"), 
STREAMS_DIR);
+               return getDir(OmFileHelper.omHome, STREAMS_DIR);
        }
 
        public static File getStreamsHibernateDir() {
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 4d30f1e..2533e9d 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
@@ -33,6 +33,7 @@ import java.util.List;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import org.apache.openmeetings.core.remote.KurentoHandler;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
@@ -167,7 +168,10 @@ public class RoomPanel extends BasePanel {
                        for (Client c: cm.listByRoom(getRoom().getId())) {
                                //FIXME TODO add multiple streams support
                                if (!c.getStreams().isEmpty()) {
-                                       
sb.append(String.format("VideoManager.play(%s);", c.toJson(false).put("type", 
"room"))); // FIXME TODO add multi-stream support
+                                       
sb.append(String.format("VideoManager.play(%s);", new JSONObject()
+                                                       .put("client", 
c.toJson(false).put("type", "room"))
+                                                       .put("iceServers", 
kHandler.getTurnServers())
+                                                       )); // FIXME TODO add 
multi-stream support
                                        hasStreams = true;
                                }
                        }
@@ -233,6 +237,8 @@ public class RoomPanel extends BasePanel {
        private AppointmentDao apptDao;
        @SpringBean
        private QuickPollManager qpollManager;
+       @SpringBean
+       private KurentoHandler kHandler;
 
        public RoomPanel(String id, Room r) {
                super(id);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
index 826e47f..959aa50 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
@@ -17,24 +17,26 @@ var VideoManager = (function() {
        function _onBroadcast(msg) {
                const uid = msg.uid;
                $('#' + VideoUtil.getVid(uid)).remove();
-               Video().init(msg.client, 
VideoUtil.getPos(VideoUtil.getRects(VID_SEL), msg.stream.width, 
msg.stream.height + 25));
+               Video().init(msg);
                OmUtil.log(uid + ' registered in room');
        }
 
-       function _onReceive(c) {
-               const uid = c.uid;
+       function _onReceive(msg) {
+               const uid = msg.client.uid;
                $('#' + VideoUtil.getVid(uid)).remove();
                const o = VideoSettings.load() //FIXME TODO add multiple 
streams support
                        //, w = Video().init(c, 
VideoUtil.getPos(VideoUtil.getRects(VID_SEL), msg.stream.width, 
msg.stream.height + 25))
-                       , w = Video().init(c, 
VideoUtil.getPos(VideoUtil.getRects(VID_SEL), c.width, c.height + 25))
+                       , w = Video().init(msg)
                        , v = w.data()
                        , cl = v.client();
                OmUtil.log(uid + ' receiving video');
 
-               v.setPeer(new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly({
-                               remoteVideo : v.video()
-                               , onicecandidate : v.onIceCandidate
-                       }
+               const options = VideoUtil.addIceServers({
+                       remoteVideo : v.video()
+                       , onicecandidate : v.onIceCandidate
+               }, msg);
+               v.setPeer(new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(
+                       options
                        , function(error) {
                                if (error) {
                                        return OmUtil.error(error);
@@ -88,7 +90,7 @@ var VideoManager = (function() {
                                                }
                                                break;
                                        case 'newStream':
-                                               _onReceive(m.client);
+                                               _onReceive(m);
                                                break;
                                        default:
                                                //no-op
@@ -157,10 +159,11 @@ var VideoManager = (function() {
                v.remove();
                WbArea.updateAreaClass();
        }
-       function _play(c) {
+       function _play(msg) {
                if (!inited) {
                        return;
                }
+               const c = msg.client;
                if (VideoUtil.isSharing(c)) {
                        _highlight(share
                                        .attr('title', share.data('user') + ' ' 
+ c.user.firstName + ' ' + c.user.lastName + ' ' + share.data('text'))
@@ -175,7 +178,7 @@ var VideoManager = (function() {
                                }
                        });
                } else {
-                       _onReceive(c);
+                       _onReceive(msg);
                }
        }
        function _close(uid, showShareBtn) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index a6b934b..128bdb7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -44,7 +44,7 @@ var Video = (function() {
                        OmUtil.sendMessage({type: 'mic', id: 'activity', 
active: speaks});
                }
        }
-       function _createSendPeer() {
+       function _createSendPeer(msg) {
                const constraints = VideoSettings.constraints(c);
                navigator.mediaDevices.getUserMedia(constraints)
                        .then(function(stream) {
@@ -62,13 +62,14 @@ var Video = (function() {
                                        gainNode.connect(aDest);
                                        _stream = aDest.stream;
                                }
+                               const options = VideoUtil.addIceServers({
+                                       localVideo: video[0]
+                                       , videoStream: _stream
+                                       , mediaConstraints: constraints
+                                       , onicecandidate: self.onIceCandidate
+                               }, msg);
                                rtcPeer = new 
kurentoUtils.WebRtcPeer.WebRtcPeerSendonly(
-                                               {
-                                                       localVideo: video[0]
-                                                       , videoStream: _stream
-                                                       , mediaConstraints: 
constraints
-                                                       , onicecandidate: 
self.onIceCandidate
-                                               }
+                                               options
                                                , function (error) {
                                                        if (error) {
                                                                return 
OmUtil.error(error);
@@ -189,8 +190,8 @@ var Video = (function() {
                        });
                }
        }
-       function _init(_c, _pos) {
-               c = _c;
+       function _init(msg) {
+               c = msg.client;
                size = {width: c.width, height: c.height};
                const _id = VideoUtil.getVid(c.uid)
                        , name = _getName()
@@ -279,14 +280,15 @@ var Video = (function() {
                        vc.addClass('audio-only').css('background-image', 
'url(' + imgUrl + ')');
                }
                if (c.self) { //FIXME TODO multi-stream
-                       _createSendPeer();
+                       _createSendPeer(msg);
                } else if (VideoUtil.hasAudio(c)) {
                        vol.show();
                        _handleVolume(lastVolume);
                }
 
                vc.append(video);
-               v.dialog('widget').css(_pos);
+               //FIXME TODO multiple streams
+               
v.dialog('widget').css(VideoUtil.getPos(VideoUtil.getRects(VID_SEL), c.width, 
c.height + 25));
                return v;
        }
        function _update(_c) {

Reply via email to