Download the PHP package barivanlab/video-call-meet-laravel-webrtc without Composer

On this page you can find all versions of the php package barivanlab/video-call-meet-laravel-webrtc. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package video-call-meet-laravel-webrtc

Video Call Meet — Laravel WebRTC

Self-hosted, peer-to-peer video meetings for Laravel — zero external services.

This package adds real-time video/audio calling to any Laravel 11/12/13 application. WebRTC signaling runs entirely on your own cache store, so you need no database, no Redis, no message broker and no third-party signaling provider. It ships with a drop-in web UI (Blade + vanilla JS/CSS) and a clean PHP API you can use to build your own interface.


Requirements

TURN for hard NATs: calls between devices on the same network (or behind a normal home router) connect using only STUN. To support restrictive/symmetric NATs you can point the package at your own TURN server (see Configuration).


Installation

Require the package via Composer — Laravel's package auto-discovery will register the service provider and the Meet facade automatically:

Publish the assets

The bundled UI (CSS/JS) and the Blade views are not served from the package by default — publish them into your app so they live alongside your own assets:

After publishing, the client script and stylesheet are available at /vendor/meet/js/meet.js and /vendor/meet/css/app.css.

Optional: TURN server

If you operate a TURN server (e.g. coturn), expose it through environment variables:

Leave them unset to use STUN-only (sufficient for most calls).


Usage

Once installed and published, the UI is immediately available:

Action URL
Landing page (join / new meeting) /meet
Start a new meeting /meet/create
Open a room /meet/{room}

Open /meet, type a room code (or click New meeting) and share the room URL. That's it — no controllers, models or migrations to wire up.

Routes

Method URI Purpose
GET /meet Landing page
GET /meet/create Create a room and redirect into it
GET /meet/{room} Room page
POST /api/meet/join Register a participant
POST /api/meet/signal Send an SDP offer/answer, ICE candidate or media state
GET /api/meet/poll Short-poll for messages addressed to you
POST /api/meet/heartbeat Refresh presence
POST /api/meet/leave Leave a room
GET /api/meet/peers List current participants

Everything is wrapped in the web middleware (so CSRF + session apply). The signaling client sends the CSRF token on every POST.


Using the API directly (headless)

You can call the signaling service from your own code via the Meet facade or the SignalingServiceContract binding:

The contract is available for dependency injection:


Configuration

All behaviour is driven by config/meet.php (published via --tag=meet-config):

Key Env var Default Description
ice_servers MEET_TURN_URL, MEET_TURN_USERNAME, MEET_TURN_CREDENTIAL Google STUN ICE servers offered to peers
routes.enabled MEET_ROUTES_ENABLED true Set false to use the package as a pure library (no routes/views)
routes.web_prefix MEET_WEB_PREFIX meet Prefix for the web UI
routes.api_prefix MEET_API_PREFIX api/meet Prefix for the JSON signaling API
cache_store MEET_CACHE_STORE null (app default) Cache store used for meeting state
peer_timeout MEET_PEER_TIMEOUT 20 Seconds without a heartbeat before a peer is evicted
signal_ttl MEET_SIGNAL_TTL 60 Seconds a signaling message is kept before GC
lock_path MEET_LOCK_PATH storage/.../meet-locks Directory for advisory file locks

Customizing the UI

The Blade views are published to resources/views/vendor/meet/ and use the meet:: namespace, so you can override them exactly like any Laravel vendor view. Edit home.blade.php / room.blade.php, or point your own views at the same routes.

The client reads everything it needs from <meta> tags injected by the room view:

You only need to touch meet.js/app.css if you want to change the client behaviour or styling — they are published under public/vendor/meet/.


How it works

  1. A participant joins a room; the server stores their peer id + name in the cache and broadcasts a peer-joined event.
  2. Each peer opens an RTCPeerConnection and POSTs its SDP offer/answer and ICE candidates to /api/meet/signal.
  3. Peers GET /api/meet/poll every ~400 ms to collect any messages addressed to them.
  4. poll also refreshes presence; peers that stop heartbeating within peer_timeout seconds are evicted and a peer-left event is broadcast.

Because each room's peer list is mutated behind an advisory file lock, the signaling state stays consistent even under PHP's single-threaded request model.


Testing

The package ships with a Pest + Orchestra Testbench suite:


License

Released under the MIT License.


All versions of video-call-meet-laravel-webrtc with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
illuminate/cache Version ^11.0 || ^12.0 || ^13.0
illuminate/contracts Version ^11.0 || ^12.0 || ^13.0
illuminate/routing Version ^11.0 || ^12.0 || ^13.0
illuminate/support Version ^11.0 || ^12.0 || ^13.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package barivanlab/video-call-meet-laravel-webrtc contains the following files

Loading the files please wait ...