webcom-reach
Version:
132 lines (100 loc) • 3.59 kB
Markdown
# Getting started
### Init your namespace
- Go to [Flexible DataSync](https://io.datasync.orange.com/)
- Create a new namespace
- Download the security rules from the [reach-schema](https://webcom-components.github.io/reach-schema/draft-00/security/rules.json) repo and import them in the `security` section
### Get the library
See [installation](./installation/) on how to retrieve the Reach library and its dependencies.
### The bases
#### The Reach object
The Reach object is your only entry point.
```javascript
const myReach = new Reach('https://io.datasync.orange.com/base/<your_namespace>');
```
See [configuration](./configuration/) to learn more on the available configuration possibilities.
#### Register a new User
Create a basic registration form with email & password and use its data:
```javascript
myReach.register(email, password)
.then(user => {
// user is registered & authenticated
});
```
#### List Users & Rooms
Once the user is logged in, you can list all registered users and opened rooms:
```javascript
// List users
myReach.users()
.then(users => {
// users is the list of registered users excluding the current one
// let's keep only the connected users
window.myUsers = users.filter(user => user.status === 'CONNECTED');
});
// List rooms
myReach.rooms()
.then(rooms => {
// list of opened rooms
});
```
#### Create a Room
All users can create a room.
```javascript
myReach.createRoom('GettingStarted')
.then(room => {
// room is the newly created room
window.myRoom = room;
// the current user has automatically joined the room
});
```
#### Invite one or more users
Let's assume, you have selected a list of users:
```javascript
myRoom.invite(myUsers)
.then((room, invites) => {
// An invite has been sent to all users in myUsers
// You can listen to invites responses
invites.forEach(invite => {
invite.on('ACCEPTED', i => {
// Invite has been accepted
});
invite.on('REJECTED', i => {
// Invite has been accepted
});
});
});
```
#### Respond to invitations
First we need to listen to incoming invites:
```javascript
myReach.on(Reach.events.reach.INVITE_ADDED, invite => {
// New invite received, let's accept it
invite.accept()
.then(d => {
// Join the room
window.hisRoom = d.room;
return d.room.join();
});
});
```
#### Share the camera
Once connected to the room, a user can share a media stream with the other participants of the room.
Only the room participants will be able to view that stream.
```javascript
myRoom.share(Reach.types.AUDIO_VIDEO, localVideoContainerNode, Reach.media.constraint('HD'))
.then(localStream => {
// The local Stream has been initiated, meaning `getUserMedia` has been called and that the video stream is displayed within
// the `localVideoContainerNode`
});
```
See [stream sharing]() to get more details.
#### Listen to shared streams
Listen to published stream right after joining the room so you won't miss any shared stream:
```javascript
hisRoom.on(Reach.event.room.STREAM_PUBLISHED, remoteStream => {
window.hisStream = remoteStream;
remoteStream.subscribe(remoteVideoContainerNode)
.then(() => {
// Remote stream is subscribed and the video should appear in the `remoteVideoContainerNode` when WebRTC peer connection is established
});
});
```