feross / feross/simple-peer

peer.on('stream'.. does not fire if the first peer does not have a video track

Open
#782 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
7.8k
Forks
983
PR merge metrics
No merged PRs in 30d

Description

Everything works great if all users are streaming a video track. But if the first peer signals WITHOUT a video track, that user will not get other peers' video track.

```
addPeersAsCaller(userKeys: string[], stream) {
const participantsExcludingMe = userKeys.filter(x => x != this.meetingModel.me.userSettings.meetingUserKey);
participantsExcludingMe.forEach(userKey => {
const meetingUser = this.meetingModel.meetingUsers.find(x => x.userSettings.meetingUserKey === userKey);
if (!meetingUser.peer) {
const peer: SimplePeer.Instance = new SimplePeer({
initiator: true,
trickle: false,
stream,
wrtc: wrtc
});
peer.on('signal', signal => {
let signalData = new MeetingSignalMessage();
signalData.userSettings = this.meetingModel.me.userSettings;
signalData.signalData = signal;
signalData.callerKey = this.meetingModel.me.userSettings.meetingUserKey;
signalData.calleeKey = userKey;
this.meetingHub.sendOfferSignal(signalData);
meetingUser.isConnected = true;
this.calculateMinVideoWidth();
meetingUser.peer = peer;
});

peer.on('stream', stream => {
meetingUser.videoSrc = stream;
});
}
});
}

addPeersAsCallee(msg: MeetingSignalMessage, stream) {
const peer: SimplePeer.Instance = new SimplePeer({
initiator: false,
trickle: false,
stream,
wrtc: wrtc
});

const meetingUser = this.meetingModel.meetingUsers.find(x => x.userSettings.meetingUserKey === msg.callerKey);

peer.on('signal', signal => {
let signalData = new MeetingSignalMessage();
signalData.signalData = signal;
signalData.userSettings = this.meetingModel.me.userSettings;
signalData.callerKey = this.meetingModel.me.userSettings.meetingUserKey;
signalData.calleeKey = msg.callerKey;
this.meetingHub.sendAnswerSignal(signalData);
});

// this will not fire if I am not streaming video
peer.on('stream', stream => {
meetingUser.videoSrc = stream;
});

peer.signal(msg.signalData);
meetingUser.isConnected = true;
this.calculateMinVideoWidth();
meetingUser.userSettings = msg.userSettings;
meetingUser.peer = peer;
}
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.