Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

eyeson

eyeson-team147MIT1.9.6TypeScript support: included

Easily connect to video meetings in modern browsers.

video, rooms, library, webrtc, eyeson

readme

eyeson JavaScript Library

A library to easily connect to eyeson video meetings in modern browsers.

  • Simple but powerful: All you need is an access key. The high level abstraction allows easy control of video and audio streams, chat, screen capturing, broadcasting, media integration, document presentation and hardware device handling.
  • Lightweight: Besides offering a simple interface for managing complex workflows, eyeson has only few external dependencies. This keeps the size and potential compatibility risks small.
  • Event Driven: After creating a session, you have full control on how to respond to any events occurring during the session. With a convention based action system you can easily customize the experience for your users. Depending on your needs, events may be handled in individual interface components or managed by a state-drive approach.
  • Framework Agnostic: Using this event driven system, eyeson is seamlessly integrated with other JavaScript libraries and frameworks like Vue, React, Angular, or Elm, with or without using additional event handling libraries like Redux or RxJS.

Install

Use npm or yarn to add the package to your JavaScript project.

$ npm i --save eyeson
$ yarn add eyeson

Usage

The following snippet is a minimal example of how to connect to a eyeson room. See the documentation for details or visit the eyeson GUI to see an demo application.

eyeson.onEvent(event => {
  if (event.type !== 'accept') {
    return;
  }
  let video = document.querySelector('video');
  video.srcObject = event.remoteStream;
  video.play();
});
eyeson.start('my-eyeson-room-key');

Development

$ npm install
$ npm run build # produce bundle and minified bundle
$ npm run start # same as build but keep in watch mode
$ npm run test  # runs test in watch mode

Publishing

Make sure the library is build for production.

$ npm publish

Using babel to convert es6 to es5, webpack to bundle, jest as testing framework.

License

The software is available as open source under the terms of the MIT License.

changelog

New features are introduced and described in the eyeson developer techblog

v1.9.6 / 2024-12-06

  • new: audio-passthrough

v1.9.5 / 2024-11-25

  • new: dynamic HD (based on podium display size)
  • new: features for codec adjustments
  • prevent broken vp9 and av1 on old iOS
  • fix: geolocation link check
  • minor fixes and improvements

v1.9.4 / 2024-06-28

  • new: request_permalink_meeting_info expired error

v1.9.3 / 2024-06-11

  • new: permalink functions
  • update: SystemPressureMonitor (ComputePressure API)
  • update: DeviceManager virtual devices to the end
  • fix: typescript declarations for constructors

v1.9.2 / 2024-05-13

  • new: geolocation
  • new: default mic change detection (Chromium)

v1.9.1 / 2024-01-18

  • new: typescript declarations
  • update: presentation via ComAPI
  • new: AudioSession API

v1.9.0 / 2023-12-05

  • new: eyeson.offEvent() removes all at once
  • update: chat via ComAPI
  • update: playback_update end event

v1.8.9 / 2023-11-15

  • new: WebHIDManager (WebHID API)
  • new: eyeson.config.vbgScriptPath
  • new: eyeson.config.verbose
  • new: eyeson.config.version
  • update: FullscreenHelper.toggle(element, options)
  • bugfix: DeviceManager.start() for mobile

v1.8.8 / 2023-08-29

  • new: esm module "eyeson-esm.js"
  • new: SystemPressureMonitor (ComputePressure API)
  • new: eyeson.core.comApi.getSnapshot(id, callback)

v1.8.7 / 2023-07-11

  • perf update: virtual background and canvas mixer
  • bugfix: empty POST messages

v1.8.6 / 2023-03-07

  • new: Picture-in-picture camera
  • new FeatureDetector.hasPipCamSupport()
  • remove: YouTubeAPI

v1.8.5 / 2023-01-20

  • new: FeatureDetector.canChooseDisplaySurface and surface option for screen
  • new: error 426 ice_error
  • new: change_screen_video event
  • non existing session errors

v1.8.4 / 2022-10-28

  • new: multiple eyeson instances
  • screenshare fixes
  • stereo updates
  • bugfix: Firefox sendOnly

v1.8.3 / 2022-09-09

  • new: stereo support
  • new: FeatureDetector.canStereo()
  • new: widescreen support
  • update: user.clientId (replaces user.sipId)

v1.8.2 / 2022-08-29

  • update: picture-in-picture allow for iPhone
  • new: FeatureDetector.iOSPipCheck() to double-check non-working pip in webview
  • new: FeatureDetector.canMultipleDifferentMicrophones() to detect Firefox support
  • bugfix datachannel issues

v1.8.1 / 2022-06-09

  • updates for new signalling

v1.8.0 / 2022-04-26

  • new feature: sendOnly parameter
  • new signalling integration (remove SIP)
  • datachannel support required

v1.7.1 / 2022-02-09

  • new feature: device-loss handling
  • removal: facebook API
  • virtual background: new segmentation model

v1.7.0 / 2021-12-21

  • new feature: connection statistics
  • virtual background: local background image
  • virtual background: Safari blur
  • compiler upgrade (webpack, babel)

v1.6.2 / 2021-09-01

  • EDGE end of support
  • new feature: screenshare including audio mixed with microphone audio
  • new feature: play and stream local video files
  • new feature: Virtual Background
  • new feature: screenshare instead of camera (aka. screen-cam)
  • new feature: custom media-stream
  • rework SoundMeter
  • datachannel for SIP messages
  • error code names

v1.6.1 / 2020-12-17

  • support Chrome and Firefox on iOS/iPadOS
  • iOS improvements

v1.6.0 / 2020-11-02

  • new feature: iPad file presentation
  • new feature: iOS toggle cam and facing mode detection
  • DeviceManager makes sure to trigger devices before actual stream (due to enumerateDevices permission policy)
  • breaking changes: DeviceManager emits device changes only when they have really changed

v1.5.1 / 2020-07-16

  • SFU mode for Safari (new config option allowSafariSFU)
  • cam/mic change on Safari
  • PiP on iPad
  • new feature: kick user
  • new feature: terminate meeting