Skip to content

Commit 42c291f

Browse files
committed
add subscriber name and default track state params
1 parent 79e19f8 commit 42c291f

File tree

2 files changed

+111
-0
lines changed

2 files changed

+111
-0
lines changed

src/main/js/webrtc_adaptor.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,58 @@ export class WebRTCAdaptor {
590590
}
591591
this.webSocketAdaptor.send(JSON.stringify(jsCmd));
592592
}
593+
594+
/**
595+
* Called to start a playing session for a stream. AMS responds with start message.
596+
* Parameters:
597+
* @param {streamParameters} includes:
598+
* {string} streamId :(string) unique id for the stream that you want to play
599+
* {string=} token :(string) required if any stream security (token control) enabled. Check https://github.com/ant-media/Ant-Media-Server/wiki/Stream-Security-Documentation
600+
* {string=} roomId :(string) required if this stream is belonging to a room participant
601+
* {Array.<MediaStreamTrack>=} enableTracks :(array) required if the stream is a main stream of multitrack playing. You can pass the the subtrack id list that you want to play.
602+
* you can also provide a track id that you don't want to play by adding ! before the id.
603+
* {string=} subscriberId :(string) required if TOTP enabled. Check https://github.com/ant-media/Ant-Media-Server/wiki/Time-based-One-Time-Password-(TOTP)
604+
* {string=} subscriberName :(string) human readable name for subscriber
605+
* {string=} subscriberCode :(string) required if TOTP enabled. Check https://github.com/ant-media/Ant-Media-Server/wiki/Time-based-One-Time-Password-(TOTP)
606+
* {string=} metaData :(string, json) a free text information for the stream to AMS. It is provided to Rest methods by the AMS
607+
* {string=} [role] : role for the stream. It is used for selective forwarding of subtracks in conference mode.
608+
* {string=} [disableTracksByDefault] : disables tracks by default
609+
*/
610+
play(streamParameters) {
611+
this.playStreamId.push(streamParameters.streamId);
612+
this.playToken = streamParameters.token;
613+
this.playRoomId = streamParameters.roomId;
614+
this.playEnableTracks = streamParameters.enableTracks;
615+
this.playSubscriberId = streamParameters.subscriberId;
616+
this.playSubscriberName = streamParameters.subscriberName;
617+
this.playSubscriberCode = streamParameters.subscriberCode;
618+
this.playMetaData = streamParameters.metaData;
619+
this.playRole = streamParameters.role;
620+
this.disableTracksByDefault = streamParameters.disableTracksByDefault
621+
622+
let jsCmd =
623+
{
624+
command: "play",
625+
streamId: streamParameters.streamId,
626+
token: typeof streamParameters.token !== undefined && streamParameters.token != null ? streamParameters.token : "",
627+
room: typeof streamParameters.roomId !== undefined && streamParameters.roomId != null ? streamParameters.roomId : "",
628+
trackList: typeof streamParameters.enableTracks !== undefined && streamParameters.enableTracks != null ? streamParameters.enableTracks : [],
629+
subscriberId: typeof streamParameters.subscriberId !== undefined && streamParameters.subscriberId != null ? streamParameters.subscriberId : "",
630+
subscriberName: typeof streamParameters.subscriberName !== undefined && streamParameters.subscriberName != null ? streamParameters.subscriberName : "",
631+
subscriberCode: typeof streamParameters.subscriberCode !== undefined && streamParameters.subscriberId != null ? streamParameters.subscriberCode : "",
632+
viewerInfo: typeof streamParameters.metaData !== undefined && streamParameters.metaData != null ? streamParameters.metaData : "",
633+
role: (typeof streamParameters.role !== undefined && streamParameters.role != null) ? streamParameters.role : "",
634+
userPublishId: typeof this.publishStreamId !== undefined && this.publishStreamId != null ? this.publishStreamId : "",
635+
disableTracksByDefault: typeof streamParameters.disableTracksByDefault !== undefined && streamParameters.disableTracksByDefault != null ? streamParameters.disableTracksByDefault : false,
636+
}
637+
638+
this.webSocketAdaptor.send(JSON.stringify(jsCmd));
639+
640+
//init peer connection for reconnectIfRequired
641+
this.initPeerConnection(streamParameters.streamId, streamParameters);
642+
this.reconnectIfRequired(3000, false);
643+
}
644+
593645

594646
/**
595647
* Called to start a playing session for a stream. AMS responds with start message.

src/test/js/webrtc_adaptor.test.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2111,6 +2111,65 @@ describe("WebRTCAdaptor", function() {
21112111
webSocketAdaptor.expects("send").once().withArgs(JSON.stringify(jsCmd));
21122112
expect(initPeerConnection.calledWithExactly(streamId, "play")).to.be.true;
21132113
});
2114+
2115+
it("Play with single parameter", async function() {
2116+
let publishStreamId = "publish1"
2117+
let streamId = "stream1";
2118+
let token = "yourToken";
2119+
let roomId = "yourRoomId";
2120+
let enableTracks = true;
2121+
let subscriberId = "yourSubscriberId";
2122+
let subscriberName = "yourSubscriberName";
2123+
let subscriberCode = "yourSubscriberCode";
2124+
let metaData = "yourMetaData";
2125+
let role = "subscriber";
2126+
let disableTracksByDefault = true;
2127+
2128+
var adaptor = new WebRTCAdaptor({
2129+
websocketURL: "ws://example.com",
2130+
isPlayMode: true,
2131+
publishStreamId: publishStreamId
2132+
});
2133+
2134+
var peerConnection = new RTCPeerConnection();
2135+
var initPeerConnection = sinon.replace(adaptor, "initPeerConnection", sinon.fake.returns(peerConnection));
2136+
var webSocketAdaptor = sinon.mock(adaptor.webSocketAdaptor);
2137+
2138+
2139+
var playParameters;
2140+
2141+
playParameters.playStreamId = streamId;
2142+
playParameters.playToken = token;
2143+
playParameters.playRoomId = roomId;
2144+
playParameters.playEnableTracks = enableTracks;
2145+
playParameters.playSubscriberId = subscriberId;
2146+
playParameters.playSubscriberName = subscriberName;
2147+
playParameters.playSubscriberCode = subscriberCode;
2148+
playParameters.playMetaData = metaData;
2149+
playParameters.playRole = role;
2150+
playParameters.disableTracksByDefault = disableTracksByDefault
2151+
2152+
2153+
adaptor.play(playParameters);
2154+
2155+
let jsCmd = {
2156+
command: "play",
2157+
streamId: streamId,
2158+
token: token,
2159+
room: roomId,
2160+
trackList: enableTracks,
2161+
subscriberId: subscriberId,
2162+
playSubscriberName: playSubscriberName,
2163+
subscriberCode: subscriberCode,
2164+
viewerInfo: metaData,
2165+
role: role,
2166+
userPublishId: publishStreamId,
2167+
disableTracksByDefault: disableTracksByDefault
2168+
};
2169+
2170+
webSocketAdaptor.expects("send").once().withArgs(JSON.stringify(jsCmd));
2171+
expect(initPeerConnection.calledWithExactly(streamId, "play")).to.be.true;
2172+
});
21142173

21152174

21162175
it("getSubscriberCount", async function() {

0 commit comments

Comments
 (0)