I'm really happy to anounce this _huge_ change. This is a big milestone
for Peer Calls!
- Updated to pion/webrtc/v3, which adds the following changes:
- RTCP: Sender and Receiver reports. This should have a big impact on
A/V sync, but I haven't had the time to fully test it yet.
- RTCP: NACK generation and responding (this was previously
implemented, but having it done in Pion simplified the code).
- Removes the need to worry about the payload type.
- Refactor TracksManager into smaller components: PeersManager and pubsub
package. The pubsub package contains methods for publishing and
subscribing to tracks and generates events as soon as new track is
received. It allows clients to find out about a track without
necessarily subscribing to it.
- Add experimental server-to-server transport over a single UDP port.
This took over nine months to implement. It allows peers connected to
different peer calls SFU nodes to subscribe to each other's tracks.
Eventually, this will allow:
- Peers to connect to the nearest server and still be able to
communicate to peers in different parts of the world.
- Auto-discovery of Peer Calls nodes; currently node list must be
hardcoded on stratup.
Note that the server-to-server transport is currently _not encrypted_,
so use of VPN is advised.
Redis is still required for keeping track of users in the rooms across
instances, but that might change in the future.
- Fix broken support for insertable streams in newer versions of Chrome.
- The `peer-calls` binary now has subcommands, but will default to the
`server` command when invoked without a command name to keep backwards
compabitility.
- Add experimental `peer-calls play` command which can broadcast RTP
streams to a live Peer Calls node.
If you find any bugs, please let me know opening an issue on
https://github.com/peer-calls/peer-calls.