npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vue-webrtc

v3.0.1

Published

WebRTC video component for Vue 3

Readme

vue-webrtc

WebRTC component designed for Vue 3 ... See the DEMO

Join npm npm Contributions welcome License

See this for browser compatibility.

Installation

npm install vue-webrtc --save

Usage

import Vue from 'vue'
import WebRTC from 'vue-webrtc'
Vue.use(WebRTC)

// or
import { VueWebRTC } from 'vue-webrtc'
Vue.component(VueWebRTC.name, VueWebRTC)

// or
import { VueWebRTC } from 'vue-webrtc';
export default {
    name: 'App',
    components: {
        'vue-webrtc': VueWebRTC
    },
    ...

// template
<vue-webrtc ref="webrtc" width="100%" roomId="sample-room">
</vue-webrtc>

Testing & Dev

npm run serve

Props

| prop | type | default | notes | | ---------------- | ------- | ------------ | ------------------------- | | roomId | string | 'public-room' | id of the room to join | | socketURL | string | 'https://weston-vue-webrtc-lobby.azurewebsites.net' | URL of the signaling server, use this default or run your own, see .\vue-webrtc-lobby | | cameraHeight | number | 160 | height of video element | | autoplay | boolean | true | autoplay attribute | | screenshotFormat | string | 'image/jpeg' | format of screenshot | | enableAudio | boolean | true | enables audio on join | | enableVideo | boolean | true | enables video on join | | enableLogs | boolean | false | enables webrtc console logs | | deviceId | string | null | set video device id to a camera from navigator.mediaDevices.enumerateDevices() | | peerOptions | string | { } | set SimplePeer options such as STUN and TURN from here https://github.com/feross/simple-peer | | ioOptions | string | { rejectUnauthorized: false, transports: ['polling', 'websocket'] } | set Socket IO from here https://socket.io/docs/v4/client-options/ |

Events

| name | param | notes | | -------------- | -------- | ------------------------------------------------------------- | | opened-room | roomid | emitted when the first user opens the room | | joined-room | video | emitted when anyone joins the room | | left-room | video.id | emitted when anyone leaves the room | | share-started | video.id | emitted when a local screen share stream starts | | share-stopped | video.id | emitted when a local screen share stream stops |

Methods

| name | param | notes | | -------------- | -------- | ----------------------------------------------------------------------- | | join | void | Join a room, opening it if needed | | leave | void | Leave a room | | capture | void | Capture the current image through the webcam as base64 encoded string | | shareScreen | void | Share your screen or an app as video |

Styles

.video-list

.video-item

History

| Version | Notes | | -------------- | ----------------------------------------------------------------------- | | 3.0.1 | Added ioOptions for Socket IO | 3.0.0 | Migrated from Vue 2 to Vue 3 | 2.0.0 | Replaced signaling server and webrtc library with SimplePeer | 1.2.2 | Added stunServer and turnServer properties | | 1.2.1 | Added Vue CLI sample, npm audit fixes | | 1.2.0 | Added the Screen Share button |

Upgrading from V2 to V3

V3 of this component is a migration from Vue 2 to Vue 3. There is no new functionality yet. The older V2 will only be patched as needed and maintained as Vue 2.

Upgrading from V1 to V2

V2 of this component is mostly compatible with V1 but it completely replaces the internals with a new signaling server and a new SimplePeer client. Due to this, you will need to set the [socketUrl] to a new instance of the included .\vue-webrtc-lobby socket server. There is a default instance that you are welcome to use but you should run your own. If you are using STUN and TURN settings, you will now need to set those in [peerOptions] .

Quick Start with Vue CLI

vue create sample
cd sample
yarn install
npm install vue-webrtc --save

Now open the App.vue file and replace the HelloVue component with the code in the Usage section above.

npm run serve

See the /sample folder for a working project

Roadmap

Some features that we would like to see added are:

  • Chat component
  • Audio selection
  • WebRTC data events

Let us know what you'd like to see next and vote for a feature.

License

MIT

Credits

Author: @AndyWeston on GitHub at vue-webrtc

This project is based off of:

SimplePeer

SimpleSignal