Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FAQ entries on how to use ion-sfu #496

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion FAQ.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Frequenty Asked Questions

### Can I / should I build on `ion-sfu`?

`ion-sfu` is considered "stable beta", and you can safely build on it. Many features are still under development, and the API is subject to change rapidly in future releases. If you want to build production-ready apps with ion-sfu, you need a strong grasp of WebRTC fundamentals and modern web development, and some experience with pion and golang is strongly recommended. You'll need to design your own Application Layer, responsible for transmitting signalling messages, validating client input, authenticating your users, administering room membership, and orchestrating scaling decisions.

### Is `ion-sfu` actively maintained or supported? Can I get help?

`ion-sfu` actively developed and supported by an awesome community of volunteers! As an open source project in the pion community, the people who support this project are just the same volunteers who've made time to build and release it. You can join us in the gophers slack in #ion, we have a helpful and positive community and many people are always glad to talk about the project! Once you learn and use `ion-sfu`, you can help make the community better, too!

### What happened to the `cmd/signal` servers?

The Signalling server implementations in `cmd/signal` were moved to the `examples/` folder. If you want to build on `ion-sfu`, you should build your own Application Server, and the `examples/` are a great place to start.

### What do you mean by "Application Server"?

Ion-sfu is designed to be a building block that forwards video streams, not a finished product. It contains no mechanisms for validating user accounts or published streams; you must ensure that UIDs are not duplicated or spoofed. You must parse all incoming Offer signals to parse the SDP, and determine if the expected audio codecs are being sent, or the video is of a supported resolution. If a node has too many users, maybe you want to shard your sessions across a cluster of `ion-sfu` -- scaling decisions are left up to you.

### Community ion-SFU implementations
If you don't want to build an Application Server, check out these community projects:

+ `pion/ion` project (Work-in-Progress) alpha/pre-release, uses grpc-web and custom protobufs for signalling
+ `cryptagon/ion-cluster` project (maintained by Tandem.io), uses jsonrpc for signalling

### How do I build the client?

Use one of the official SDKs:
- Browser: [ion-sdk-js](https://github.com/pion/ion-sdk-js)
- Go application: [ion-sdk-go](https://github.com/pion/ion-sdk-go)
- Mobile: [ion-sdk-flutter](https://github.com/pion/ion-sdk-flutter)

### How can I join a session receive-only, without sending any media?

If you are using [ion-sdk-js](https://github.com/pion/ion-sdk-js) this should work by default. If not, read on.
Expand All @@ -8,7 +37,7 @@ If a participant does not have a microphone or camera, or denies access to them

Add a datachannel to the publisher peer connection. e.g. `this.publisher.createDataChannel("ion-sfu")`

### Does ion-sfu support audio level indication, telling me who is talking?
### Does `ion-sfu` support audio level indication, telling me who is talking?

Yes. The subscriber peer connection will contain a data channel. It gets sent an array of stream id that are making noise, ordered loudest first.

Expand Down