|
1 | | -<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p> |
| 1 | +Laravel WebRTC with Reverb & Echo |
2 | 2 |
|
3 | | -<p align="center"> |
4 | | -<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a> |
5 | | -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a> |
6 | | -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a> |
7 | | -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a> |
8 | | -</p> |
| 3 | +This project integrates WebRTC with Laravel Reverb and Laravel Echo, enabling real-time peer-to-peer communication using Laravel’s native WebSocket capabilities. |
9 | 4 |
|
10 | | -## About Laravel |
| 5 | +Features |
| 6 | + • Real-Time Communication: Uses WebRTC for live audio and video calls. |
| 7 | + • WebSockets with Laravel Reverb: Provides scalable and low-latency signaling for WebRTC. |
| 8 | + • Laravel Echo Integration: Handles WebSocket events seamlessly. |
| 9 | + • Vue.js Frontend: A dynamic and interactive UI built with Vue.js. |
| 10 | + • Self-Hosted WebSocket Server: No need for third-party WebSocket services. |
11 | 11 |
|
12 | | -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: |
| 12 | +Prerequisites |
| 13 | + • PHP 8+ |
| 14 | + • Laravel 10+ |
| 15 | + • Composer |
| 16 | + • Node.js & npm |
| 17 | + • SQLite, MySQL, or PostgreSQL |
13 | 18 |
|
14 | | -- [Simple, fast routing engine](https://laravel.com/docs/routing). |
15 | | -- [Powerful dependency injection container](https://laravel.com/docs/container). |
16 | | -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. |
17 | | -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). |
18 | | -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). |
19 | | -- [Robust background job processing](https://laravel.com/docs/queues). |
20 | | -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). |
| 19 | +Installation |
| 20 | + 1. Clone the Repository: |
21 | 21 |
|
22 | | -Laravel is accessible, powerful, and provides tools required for large, robust applications. |
| 22 | +git clone https://github.com/mastashake08/laravel-webrtc.git |
| 23 | +cd laravel-webrtc |
23 | 24 |
|
24 | | -## Learning Laravel |
25 | 25 |
|
26 | | -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. |
| 26 | + 2. Install Dependencies: |
27 | 27 |
|
28 | | -You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. |
| 28 | +composer install |
| 29 | +npm install |
29 | 30 |
|
30 | | -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. |
31 | 31 |
|
32 | | -## Laravel Sponsors |
| 32 | + 3. Environment Configuration: |
| 33 | + • Duplicate .env.example and rename it to .env. |
| 34 | + • Update your database settings. |
| 35 | + • Set the WebSockets connection driver: |
33 | 36 |
|
34 | | -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com). |
| 37 | +BROADCAST_DRIVER=pusher |
| 38 | +PUSHER_APP_ID=reverb |
| 39 | +PUSHER_APP_KEY=reverb |
| 40 | +PUSHER_APP_SECRET=reverb |
35 | 41 |
|
36 | | -### Premium Partners |
37 | 42 |
|
38 | | -- **[Vehikl](https://vehikl.com/)** |
39 | | -- **[Tighten Co.](https://tighten.co)** |
40 | | -- **[WebReinvent](https://webreinvent.com/)** |
41 | | -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** |
42 | | -- **[64 Robots](https://64robots.com)** |
43 | | -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** |
44 | | -- **[Cyber-Duck](https://cyber-duck.co.uk)** |
45 | | -- **[DevSquad](https://devsquad.com/hire-laravel-developers)** |
46 | | -- **[Jump24](https://jump24.co.uk)** |
47 | | -- **[Redberry](https://redberry.international/laravel/)** |
48 | | -- **[Active Logic](https://activelogic.com)** |
49 | | -- **[byte5](https://byte5.de)** |
50 | | -- **[OP.GG](https://op.gg)** |
| 43 | + • Generate an application key: |
51 | 44 |
|
52 | | -## Contributing |
| 45 | +php artisan key:generate |
53 | 46 |
|
54 | | -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). |
55 | 47 |
|
56 | | -## Code of Conduct |
| 48 | + 4. Run Database Migrations: |
57 | 49 |
|
58 | | -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). |
| 50 | +php artisan migrate |
59 | 51 |
|
60 | | -## Security Vulnerabilities |
61 | 52 |
|
62 | | -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. |
| 53 | + 5. Start Laravel Reverb (WebSocket Server): |
63 | 54 |
|
64 | | -## License |
| 55 | +php artisan reverb:start |
65 | 56 |
|
66 | | -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). |
| 57 | + |
| 58 | + 6. Start the Laravel Application: |
| 59 | + |
| 60 | +php artisan serve |
| 61 | + |
| 62 | + |
| 63 | + 7. Compile Frontend Assets: |
| 64 | + |
| 65 | +npm run dev |
| 66 | + |
| 67 | +Or for production: |
| 68 | + |
| 69 | +npm run build |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | +WebRTC Signaling Flow |
| 74 | + 1. User joins a call → Laravel Echo broadcasts an event via Reverb. |
| 75 | + 2. New peer detected → WebRTC initiates a peer-to-peer connection. |
| 76 | + 3. ICE Candidates exchanged → STUN/TURN servers handle NAT traversal. |
| 77 | + 4. Media streams established → Users can see and hear each other. |
| 78 | + |
| 79 | +Configuration for Laravel Echo |
| 80 | + |
| 81 | +Your resources/js/bootstrap.js should have the following: |
| 82 | + |
| 83 | +import Echo from 'laravel-echo'; |
| 84 | + |
| 85 | +window.Pusher = require('pusher-js'); |
| 86 | + |
| 87 | +window.Echo = new Echo({ |
| 88 | + broadcaster: 'pusher', |
| 89 | + key: 'reverb', |
| 90 | + wsHost: window.location.hostname, |
| 91 | + wsPort: 6001, |
| 92 | + forceTLS: false, |
| 93 | + disableStats: true, |
| 94 | +}); |
| 95 | + |
| 96 | +Usage |
| 97 | + 1. Open two different browser windows (or devices). |
| 98 | + 2. Start a call and invite the other participant. |
| 99 | + 3. Laravel Reverb will handle WebSocket signaling. |
| 100 | + 4. WebRTC will establish the peer-to-peer connection. |
| 101 | + |
| 102 | +Contributing |
| 103 | + |
| 104 | +Contributions are welcome! Please fork the repo and submit a pull request. |
| 105 | + |
| 106 | +License |
| 107 | + |
| 108 | +This project is open-source under the MIT License. |
0 commit comments