RTCMultiConnection-SignalR
RTCMultiConnection-SignalR copied to clipboard
Does not work with latest RTCMultiConnection
I was not able to run this with the latest version of RTCMultiConnection.js :( If I use the version from this repo, it works fine
I can some help.
- function connection.socket.emit should some fix with next code:
connection.socket.emit = function (eventName, data, callback) {
if (eventName === 'changed-uuid') return;
if (data.message && data.message.shiftedModerationControl) return;
connection.socket.send({
eventName: eventName,
data: data
});
if (callback) {
callback = callback || function () { };
if (eventName === 'open-room' || eventName === 'join-room') {
callback(true, null);
}
else {
callback();
}
}
};
- Then should insert code
function onMessagesCallback(message)
from RTCMultiConnection.jsfunction onMessageEvent(message)
and remove stringupdateExtraBackup(message.sender, message.extra);
For me it works but it's no clean fix. I also wait for answer from developer
I can some help.
- function connection.socket.emit should some fix with next code:
connection.socket.emit = function (eventName, data, callback) { if (eventName === 'changed-uuid') return; if (data.message && data.message.shiftedModerationControl) return; connection.socket.send({ eventName: eventName, data: data }); if (callback) { callback = callback || function () { }; if (eventName === 'open-room' || eventName === 'join-room') { callback(true, null); } else { callback(); } } };
- Then should insert code
function onMessagesCallback(message)
from RTCMultiConnection.jsfunction onMessageEvent(message)
and remove stringupdateExtraBackup(message.sender, message.extra);
For me it works but it's no clean fix. I also wait for answer from developer
Can you share RTCMultiConnection.js
@alexsandr1992 what did you do regarding the function onMessagesCallback(message)
and function onMessageEvent(message)
, that was not clear in your comment? would you please elaborate more? Thanks.
@alexsandr1992 what did you do regarding the function
onMessagesCallback(message)
and functiononMessageEvent(message)
, that was not clear in your comment? would you please elaborate more? Thanks.
Hi, Thats my changes of file SignalRConnection.js. Sorry, but I use object instead functions, so maybe changes see some hard
onMessagesCallback: function (message) {
var connection = SignalRConnection.connection;
var mPeer = connection.multiPeersHandler;
if (message.remoteUserId !== connection.userid && !message.message.newParticipationRequest) return;
if (connection.peers[message.sender] && connection.peers[message.sender].extra !== message.message.extra) {
connection.peers[message.sender].extra = message.extra;
connection.onExtraDataUpdated({
userid: message.sender,
extra: message.extra
});
}
if (message.message.streamSyncNeeded && connection.peers[message.sender]) {
var stream = connection.streamEvents[message.message.streamid];
if (!stream || !stream.stream) {
return;
}
var action = message.message.action;
if (action === 'ended' || action === 'inactive' || action === 'stream-removed') {
if (connection.peersBackup[stream.userid]) {
stream.extra = connection.peersBackup[stream.userid].extra;
}
connection.onstreamended(stream);
return;
}
var type = message.message.type !== 'both' ? message.message.type : null;
if (typeof stream.stream[action] === 'function') {
stream.stream[action](type);
}
return;
}
if (message.message === 'dropPeerConnection') {
connection.deletePeer(message.sender);
return;
}
if (message.message.allParticipants) {
if (message.message.allParticipants.indexOf(message.sender) === -1) {
message.message.allParticipants.push(message.sender);
}
message.message.allParticipants.forEach(function (participant) {
mPeer[!connection.peers[participant] ? 'createNewPeer' : 'renegotiatePeer'](participant, {
localPeerSdpConstraints: {
OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio,
OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo
},
remotePeerSdpConstraints: {
OfferToReceiveAudio: connection.session.oneway ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio,
OfferToReceiveVideo: connection.session.oneway ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo
},
isOneWay: !!connection.session.oneway || connection.direction === 'one-way',
isDataOnly: isData(connection.session)
});
});
return;
}
if (message.message.newParticipant) {
if (message.message.newParticipant === connection.userid) return;
if (connection.peers[message.message.newParticipant]) return;
mPeer.createNewPeer(message.message.newParticipant, message.message.userPreferences || {
localPeerSdpConstraints: {
OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio,
OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo
},
remotePeerSdpConstraints: {
OfferToReceiveAudio: connection.session.oneway ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio,
OfferToReceiveVideo: connection.session.oneway ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo
},
isOneWay: !!connection.session.oneway || connection.direction === 'one-way',
isDataOnly: isData(connection.session)
});
return;
}
if (message.message.readyForOffer) {
if (connection.attachStreams.length) {
connection.waitingForLocalMedia = false;
}
if (connection.waitingForLocalMedia) {
// if someone is waiting to join you
// make sure that we've local media before making a handshake
setTimeout(function () {
onMessageEvent(message);
}, 1);
return;
}
}
if (message.message.newParticipationRequest && message.sender !== connection.userid) {
if (connection.peers[message.sender]) {
connection.deletePeer(message.sender);
}
var userPreferences = {
extra: message.extra || {},
localPeerSdpConstraints: message.message.remotePeerSdpConstraints || {
OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio,
OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo
},
remotePeerSdpConstraints: message.message.localPeerSdpConstraints || {
OfferToReceiveAudio: connection.session.oneway ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio,
OfferToReceiveVideo: connection.session.oneway ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo
},
isOneWay: typeof message.message.isOneWay !== 'undefined' ? message.message.isOneWay : !!connection.session.oneway || connection.direction === 'one-way',
isDataOnly: typeof message.message.isDataOnly !== 'undefined' ? message.message.isDataOnly : isData(connection.session),
dontGetRemoteStream: typeof message.message.isOneWay !== 'undefined' ? message.message.isOneWay : !!connection.session.oneway || connection.direction === 'one-way',
dontAttachLocalStream: !!message.message.dontGetRemoteStream,
connectionDescription: message,
successCallback: function () { }
};
connection.onNewParticipant(message.sender, userPreferences);
return;
}
if (message.message.changedUUID) {
if (connection.peers[message.message.oldUUID]) {
connection.peers[message.message.newUUID] = connection.peers[message.message.oldUUID];
delete connection.peers[message.message.oldUUID];
}
}
if (message.message.userLeft) {
mPeer.onUserLeft(message.sender);
if (message.message.autoCloseEntireSession) {
connection.leave();
}
return;
}
mPeer.addNegotiatedMessage(message.message, message.sender);
}```
@alexsandr1992 Are you using RTCMultiConnection.js version v3.6.9? if yes would you please share it with us? Thanks.
@alexsandr1992 Are you using RTCMultiConnection.js version v3.6.9? if yes would you please share it with us? Thanks.
yes, I use RTCMultiConnection.js version v3.6.9 and code in this file in my project is same that in repository.
IT'S Working NOW!!!!! Thank you soooo much @alexsandr1992, I replaced my onMessagesCallback(message)
with the one that you provided above, I made only one change, I removed var connection = SignalRConnection.connection;
cause I have connection as global var.
Also, I replaced connection.socket.emit
with the one you mentioned earlier above.
What a great day!!