Giter Site home page Giter Site logo

voxeet-sdk-web's Introduction

Dolby.io Communications SDK for Web

Dolby.io SDK logo

The Dolby.io Communications SDK for Web is an UMD Module that can be imported directly in the browser or via a npm package.

The SDK is asynchronous and uses promise at its core. For more information regarding the Web SDK refer to this link.

For additional information on Dolby.io Communications SDK for Web releases, recent changes, and new features, see the Dolby.io Communications Client SDK release notes.

voxeet-sdk-web's People

Contributors

dolbyio-gh-bot avatar dzfill avatar fabienlavocat avatar jfan-dolby avatar msobo1 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

dzeitman dzfill

voxeet-sdk-web's Issues

Question on Conference creation limits

Hi,
Our use case requires creating, joining and leaving of conferences by a user sometimes 100-200 times in an hour.

Are there any limits/throttling on conference.create or conference.join methods?

SessionError: A session has already been opened

if (!VoxeetSDK.session.isOpen()) { await VoxeetSDK.session.open({ name: 'testname', externalId: 1 }); }

Intermittently this code is producing an error:
"SessionError: A session has already been opened"

How can this be possible? We've taken care to check that a session is not open before we try to open one, but still it sometimes throws this error.

VoxeetSDK.conference.isSpeaking not working consistently

According to the Web SDK docs, the isSpeaking method should have its callback value set to true if the audioLevel of a participant is above 0.2.

Please consider the following example:

for (const [, participant] of VoxeetSDK.conference.participants) {
  VoxeetSDK.conference.isSpeaking(participant, (value: boolean) => {
    console.log(participant.id, value);
  });
}

The code above is repeatedly (3 times per second) called during the conference as per the instructions on the documentation.

With the above implementation, value is console logged as true just for a very short period of time (less than a second) even though I keep speaking with the same volume on the microphone. Only after a few seconds of silence in the microphone, if I
speak again, does the same behavior happen.

I'm assuming the expected behavior would be for value to be true as long as I keep speaking loudly on the microphone, and that's not what happens (it's reset to false even though I haven't stopped speaking or lowered my voice level).

I also wrote some tests replacing isSpeaking by the audioLevel method in the example above and typing the value in the callback function as a number, to check if the value returned would be greater than 0.2 as the documentation references. The same behaviour occur: I see a value greater than 0 just for a very brief period of time (less than a second) and it becomes zero right away even though I keep emitting the same amount of volume to the microphone.

Is there something I should be doing differently to reliably identify if a participant is speaking on the microphone? Are there alternative methods so I can have a reliable and real-time source of truth in regards to participants that have sound detected on their microphones?

Thanks.

Conference in a Wrong State

Hi Team,

We are seeing some issues in our platform when we have multiple users at once. Most of the users experience was OK but a few had some issues.

Please see logs attached.
dolby-conference-errors.txt

As you can see the conference has got into a wrong state. Why would this be? While other Users were fine?
How can we mitigate this issue?

Thanks!

Build 3.5 is not stable at all

First issue is your all three voxeet-dvwc-worker.js, voxeet-sdk.js, voxeet-worklet.js should be on root its required.

After putting files on root then load voxeet-sdk.js then if we refresh browser and join conference will through these errors.

image

With every new build always release new sample code incase if there is any change we must acknowledged about new updates or required code changes.

Uncaught (in promise) Error: Uninitialized VoxeetSDK

Context

I am currently working on a proof of concept using the Dolby.io platform for a video conferencing web application. I have taken most of the code from the examples as it is very early stages for the project. The Voxeet SDK version information is in the below snippet and I am also using the Voxeet React components package but the issue is not related to that (I don't think).

VoxeetSDK version: 3.3.0

vendor.2f02a693.js:31 VoxeetSDK flavor: production

vendor.2f02a693.js:31

The Issue

The issue I am facing is that when the project is built and deployed I get the following error in the console after audio / video input screen which prevents me going any further in to the call. See attached image for the error:

Screenshot 2021-12-13 at 09 43 21

Unfortunately there isn't much information to be had from the error and interestingly, this error does not happen on a local dev server.

Expected result

I would expect the deployed version to act and behave the same as the local dev environment and initialise the conference accordingly.

Token expiry and Resuming after disconnection of bad internet connection

Hello,

  1. I found that after token expired, conference also end which is annoying for users while conference is in progress. I didn't find any example or refresh token case in documentation, can you please clarify how can we refresh token before expiry and pass it to running conference to resume conference without interruption?

  2. Also in case if any user disconnected due to internet connection or any other reason such as (ErrorWebSocketError, PeerConnectionDisconnectedError) issue, how can we resume or retry connectivity without refreshing the whole site?

Voxeet does not work with Next.Js

Hi,
I am trying to use Voxeet in my brand new Nextjs project but I am getting the following error, Is there any recommended way to integrate SDK with nextjs project? Please advice

voxeet

Setting volume level of remote participant

Hi,
Is it possible at all to change the volume level of a remote participant? As in, I as a local participant want to lower the level of audio i'm receiving from a specific remote participant.

Missing types in typings

Hi, we are trying make use of your type definitions (SDK 3.7.0).

We have compile errors using your typings, specifically we have issues with these files:

a) Some files have imports from @dolby-dvc which appears to be an internal project not available via npm,

  • types\events\conference\ConferenceLeft.d.ts
  • types\models\CaptureMode.d.ts

b) Path issues / files do not exist

  • types\services\conference\ConferenceService.d.ts

    • ConferenceManager
  • types\services\index.d.ts has path issues the imports

    • /telemetry/TelemetryService
    • /browserevent/BrowserEventService

ServerError: No error message, WebSocketError: No error message

These errors are originating from VoxeetSDK and are eating up my Sentry quota.

"voxeet-sdk.js in qa.onClose"

A single user can send hundreds of those in a day, without reporting any loss of functionality.

How do we suppress those errors or catch them so they don't bubble up?

The remote-view freezes, if a Chromium-based browser participates on an Android device

The error occurs, if a participant joins a conference, using an Android device with a Chromium-based browser. Upon joining, the remote view of the other participant will work as expected for a few seconds. Then the video freezes, but the audio still works as expected.

This only happens, if the device uses a Chromium-based browser. We tested this on a handful of other Android devices also with different mobile network providers and WLAN.
On non-Chromium browsers e.g. Firefox, the issue does not occur.

The reproduction of the problem can be easily reproduced using the comms-sdk-web-getting-started demo.

Reproduction of the problem

  1. e.g. Firefox Desktop navigate to the URL https://developer.dolby.io/demos/comms-sdk-web-getting-started/index.html
  2. enter token and join the chat
  3. start Android Chrome or other Chromimum based browser (Edge, Brave)
  4. navigate to https://developer.dolby.io/demos/comms-sdk-web-getting-started/index.html and log in with same token
  5. join chat
  6. on mobile device remote and local streams will continue to run
  7. however, remote view freezes on Firefox desktop.

Current conference participants map is always empty

Hello! I'm trying to access the current conference participants list, but unfortunately it is always empty for some reason. At the same time, for example, ActiveParticipants event does contain all the participants.

SDK version 3.8.5

WASM warnings when joining a conference

Hi,

It seems, everytime we call await VoxeetSDK.conference.join(conference, joinOptions);

joinOptions:

constraints: {audio: true, video: false}
preferRecvMono: false
preferSendMono: false
spatialAudio: true

we see the below warnings:

wasm streaming compile failed: TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.

falling back to ArrayBuffer instantiation

if (J(),
    r.instantiateWasm)
        try {
            return r.instantiateWasm(e, t)
        } catch (e) {
            return p("Module.instantiateWasm callback failed with error: " + e),
            !1
        }
    (m || "function" != typeof WebAssembly.instantiateStreaming || te(L) || "function" != typeof fetch ? o(n) : fetch(L, {
            credentials: "same-origin"
        }).then((function(t) {
            return WebAssembly.instantiateStreaming(t, e).then(n, (function(e) {
                return p("wasm streaming compile failed: " + e),
                p("falling back to ArrayBuffer instantiation"),
                o(n)
            }
            ))
        }

failed to asynchronously prepare wasm: CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 64 6f @+0

Aborted(CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 64 6f @+0)

Can we get some advice on what this is and the effect this may have?

Thanks.

Timeout if camera and microphone user authorization is too slow

If a user has too long to confirm the authorization of camera and microphone when entering a video call, VoxeetSDK aborts the join command after 5 seconds. An error is displayed in the browser console: ExecutionTimeoutError: ''' execution timeout, limit:5000[ms]. Although the user has set the rights after the timeout.

After analyzing the problem, we found out that this problem occurs several times in our system. The users are simply too slow until they confirm the permission dialogs.

In general, the question is whether it really makes sense to timeout a browser operation that is controlled by the user (browser API call has no timeout).

Would it be possible to extend the SDK in such a way that no timeout occurs for the authorization of camera/microphone by the user or that we can pass this timeout via configuration?

Updated stream is not found in participant.streams when streamUpdated called

Context

I'm currently working on migrating web SDK from 2.4.0 to 3.3.0.

SDK settings:
VoxeetSDK version: 3.3.0
VoxeetSDK flavor: production
Telemetry status: enabled

Issue

When streamUpdated event is called, I've tried to find the same stream as the returning stream from participant.streams but could not find. I've tested this on streamAdded event and it had the stream. I simply used below code to print logs.

  • streamUpdated
VoxeetSDK.conference.on('streamUpdated', (participant, stream) => {
  console.log(find(participant.streams, (s) => s.id === stream.id)); // return FALSE
});
  • streamAdded
VoxeetSDK.conference.on('streamAdded', (participant, stream) => {
  console.log(find(participant.streams, (s) => s.id === stream.id)); // return TRUE
});

Expected Result

I would expect the stream to be found in participant.steams as well on streamUpdated.

Separate camera and microphone user authorization

While testing and looking for a workaround to issue #21, we noticed that camera and microphone authorization can be requested at once, but voxeet does it in two steps.

When joining to a call

const joinOptions = {
    constraints: { audio: true, video: true }
};

we discovered that first camera authorization is requested:
image

and after 2-3 secounds microphone authorization is requested:
image

Better user experience would be, if camera/microphone authorization is made at same time.

for example the following code
await navigator.mediaDevices.getUserMedia({ audio: true, video: true });

requests authorization at same time:
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.