Fix media stream & data channel messages sending

This commit is contained in:
Mario Danic 2018-10-15 12:17:57 +02:00
parent 7e1e86ae9e
commit 8af047926e
2 changed files with 18 additions and 7 deletions

View File

@ -248,6 +248,7 @@ public class CallController extends BaseController {
private ExternalSignalingServer externalSignalingServer; private ExternalSignalingServer externalSignalingServer;
private MagicWebSocketInstance webSocketClient; private MagicWebSocketInstance webSocketClient;
private WebSocketConnectionHelper webSocketConnectionHelper; private WebSocketConnectionHelper webSocketConnectionHelper;
private boolean hasMCU;
public CallController(Bundle args) { public CallController(Bundle args) {
super(args); super(args);
@ -793,8 +794,18 @@ public class CallController extends BaseController {
} }
if (inCall) { if (inCall) {
for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) { if (!hasMCU) {
magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(message)); for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) {
magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(message));
}
} else {
for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) {
if (magicPeerConnectionWrapperList.get(i).getSessionId().equals(callSession)) {
magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(message));
break;
}
}
} }
} }
} }
@ -1493,18 +1504,16 @@ public class CallController extends BaseController {
if ((magicPeerConnectionWrapper = getPeerConnectionWrapperForSessionId(sessionId)) != null) { if ((magicPeerConnectionWrapper = getPeerConnectionWrapperForSessionId(sessionId)) != null) {
return magicPeerConnectionWrapper; return magicPeerConnectionWrapper;
} else { } else {
boolean hasMCU = webSocketClient != null && webSocketClient.hasMCU(); hasMCU = webSocketClient != null && webSocketClient.hasMCU();
if (hasMCU) { if (hasMCU) {
magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory, magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory,
iceServers, sdpConstraintsForMCU, sessionId, callSession, localMediaStream, hasMCU); iceServers, sdpConstraintsForMCU, sessionId, callSession, null, hasMCU);
} else { } else {
magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory, magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory,
iceServers, sdpConstraints, sessionId, callSession, localMediaStream, hasMCU); iceServers, sdpConstraints, sessionId, callSession, localMediaStream, hasMCU);
} }
magicPeerConnectionWrapper = new MagicPeerConnectionWrapper(peerConnectionFactory,
iceServers, sdpConstraints, sessionId, callSession, localMediaStream, hasMCU);
magicPeerConnectionWrapperList.add(magicPeerConnectionWrapper); magicPeerConnectionWrapperList.add(magicPeerConnectionWrapper);
return magicPeerConnectionWrapper; return magicPeerConnectionWrapper;
} }

View File

@ -87,7 +87,9 @@ public class MagicPeerConnectionWrapper {
new MagicPeerConnectionObserver()); new MagicPeerConnectionObserver());
if (peerConnection != null) { if (peerConnection != null) {
peerConnection.addStream(localMediaStream); if (localSession != null) {
peerConnection.addStream(localMediaStream);
}
if (hasInitiated || hasMCU) { if (hasInitiated || hasMCU) {
DataChannel.Init init = new DataChannel.Init(); DataChannel.Init init = new DataChannel.Init();