Skip to content

simonzander/PeerWave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PeerWave

WebRTC share peer to peer to peer... the endless meshed wave of sharing

Build Status GitHub last commit GitHub issues

How it works?

PeerWave Demo

In the current version, you can share your screen, window, tab, or multiple files. This app uses Socket.io to manage some metadata for peers and files. The data is shared directly between peers without a server in the middle. All direct peers share the same stream or downloaded files to increase your audience and overcome limitations.

This is achieved using the WebRTC standard. A Google STUN server is used to establish connections between peers, but you can use your own STUN server if you host the app yourself. All metadata in this app is temporary and will be lost if the server restarts.

🚨 New Feature: Meeting 🚨

We're excited to announce our latest feature! You can now create a room for instant or scheduled meetings. Participants can join using their webcam and microphone, and even share their screens. Get ready to enhance your collaboration experience!

Table of Contents

Try It

You can find a running instance at peerwave.org

Meeting

Our new meeting feature provides a comprehensive set of tools designed to enhance your communication and collaboration experience. Below is a detailed overview of each capability:

Chat Function

  • Description: Engage in real-time text conversations alongside video meetings.
  • Usage: Accessible via the chat icon within the meeting interface.

Voice Only

  • Description: Participate in meetings using audio-only mode.
  • Usage: Select the voice-only option when creating the meeting.

Scheduled or Instant Meeting

  • Description: Create meetings that can either be scheduled for a future time or initiated instantly.
  • Usage: Use the Schedule or Instant when you set up a meeting.

Emojis

  • Description: Express emotions and reactions using a variety of emojis during meetings.
  • Usage: Access the emoji panel within the meeting interface.

Switch Camera & Microphone in Meeting

  • Description: Toggle between different cameras and microphones during the meeting.
  • Usage: Use the bottom menu within the meeting interface to switch devices.

Mute and Unmute

  • Description: Control your audio input by muting or unmuting your microphone.
  • Usage: Click the microphone icon to mute or unmute during the meeting.

Camera On and Off

  • Description: Turn your camera on or off during the meeting as needed.
  • Usage: Click the camera icon to enable or disable your video feed.

Screen Sharing

  • Description: Share your screen to present documents, slides, or other content.
  • Usage: Click the screen sharing button and select the screen or window you wish to share.

Set Max Cam Resolution to Prevent Traffic

  • Description: Optimize bandwidth usage by setting a maximum camera resolution.
  • Usage: Adjust the camera resolution settings when you set up the meeting.

Raise Hand

  • Description: Indicate that you wish to speak without interrupting the conversation.
  • Usage: Click the raise hand icon to notify the host and participants.

Other Audio Output in Chrome with Test Sound

  • Description: Select different audio outputs in Chrome and test sound settings to ensure optimal audio performance.
  • Usage: Select Sound Output before joining the meeting. You can also test it.

These features are designed to provide a versatile and user-friendly meeting experience, enabling effective communication and collaboration.

Stream Settings

Cropping

You can crop the hosted video with an experimental API that has not yet been standardized. As of 2024-06-19, this API is available in Chrome 94, Edge 94 and Opera 80.

Resizing

You can resize the hosted video with an experimental API that has not yet been standardized. As of 2024-06-19, this API is available in Chrome 94, Edge 94 and Opera 80.

Getting Started

Node

# Install dependencies for server
npm install

# Run the server
node server

Docker Build

# Building the image
docker build --tag peerwave .

# Run the image in a container
docker run -d -p 4000:4000 peerwave

Docker Hub

Image: simonzander/peerwave

# Pull the image from Docker Hub
docker pull simonzander/peerwave

# Run the image in a container
docker run -d -p 4000:4000 peerwave

Limitations

The main limitation is your upload speed, which is shared with your direct peers. If you are streaming, factors like the codec, resolution, and quick refreshes can increase your CPU (for VP8/VP9) or GPU (for H.264) load and affect your upload speed. The Chrome browser can handle up to 512 data connections and 56 streams.

If you are sharing files, the file size and the number of files increase your memory usage. The files are splitted in chunks and your peers share also your downloaded file and hold the data in their memory.

Source Code

This is an open-source project licensed under the MIT license.

Support

If you like this project, you can support me by buying me a coffee. Feature requests and bug reports are welcome.