PHPackages                             doctopro/laravel-video-chat - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. doctopro/laravel-video-chat

ActiveLibrary

doctopro/laravel-video-chat
===========================

Laravel Video Chat using Socket.IO and WebRTC

v2.0.0(6y ago)08MITPHPPHP ^7.2

Since Oct 14Pushed 6y agoCompare

[ Source](https://github.com/doctopro/laravel-video-chat)[ Packagist](https://packagist.org/packages/doctopro/laravel-video-chat)[ RSS](/packages/doctopro-laravel-video-chat/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (7)Versions (17)Used By (0)

Laravel Video Chat (fork from wqqas1/laravel-video-chat)
========================================================

[](#laravel-video-chat-fork-from-wqqas1laravel-video-chat)

Laravel Video Chat using Socket.IO and WebRTC

Working on Laravel 6!

Installation
------------

[](#installation)

```
composer require jgizinski/laravel-video-chat
```

Laravel 5.5 uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.

If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php

```
Wqqas1\LaravelVideoChat\LaravelVideoChatServiceProvider::class,
```

```
php artisan vendor:publish --provider="Wqqas1\LaravelVideoChat\LaravelVideoChatServiceProvider"
```

And

```
php artisan migrate
php artisan storage:link

change APP_URL in .env
```

This is the contents of the published config file:

```
return [
    'relation'  => [
        'conversations' =>  Wqqas1\LaravelVideoChat\Models\Conversation\Conversation::class,
        'group_conversations' => Wqqas1\LaravelVideoChat\Models\Group\Conversation\GroupConversation::class
    ],
    'user' => [
        'model' =>  App\User::class,
        'table' =>  'users' // Existing user table name
    ],
    'table' => [
        'conversations_table'   =>  'conversations',
        'messages_table'        =>  'messages',
        'group_conversations_table' =>  'group_conversations',
        'group_users_table'     =>  'group_users',
        'files_table'           =>  'files'
    ],
    'channel'   =>  [
        'new_conversation_created'  =>  'new-conversation-created',
        'chat_room'                 =>  'chat-room',
        'group_chat_room'           =>  'group-chat-room'
    ],
    'upload' => [
        'storage' => 'public'
    ]
];
```

Uncomment `App\Providers\BroadcastServiceProvider` in the providers array of your `config/app.php` configuration file

Install the JavaScript dependencies:

```
    npm install
    npm install --save laravel-echo js-cookie vue-timeago socket.io socket.io-client webrtc-adapter vue-chat-scroll
```

If you are running the Socket.IO server on the same domain as your web application, you may access the client library like

```

```

in your application's `head` HTML element

Next, you will need to instantiate Echo with the `socket.io` connector and a `host`.

```
 require('webrtc-adapter');
 window.Cookies = require('js-cookie');

 import Echo from "laravel-echo"

 window.io = require('socket.io-client');

 window.Echo = new Echo({
     broadcaster: 'socket.io',
     host: window.location.hostname + ':6001'
 });

```

Finally, you will need to run a compatible Socket.IO server. Use [tlaverdure/laravel-echo-server](https://github.com/tlaverdure/laravel-echo-server) GitHub repository.

In `resources/js/app.js` file:

```
 import VueChatScroll from 'vue-chat-scroll';
 import VueTimeago from 'vue-timeago';

 Vue.use(VueChatScroll);
 Vue.component('chat-room' , require('./components/laravel-video-chat/ChatRoom.vue'));
 Vue.component('group-chat-room', require('./components/laravel-video-chat/GroupChatRoom.vue'));
 Vue.component('video-section' , require('./components/laravel-video-chat/VideoSection.vue'));
 Vue.component('file-preview' , require('./components/laravel-video-chat/FilePreview.vue'));

 Vue.use(VueTimeago, {
    name: 'timeago', // component name, `timeago` by default
    locale: 'en-US',
    locales: {
        // you will need json-loader in webpack 1
        'en-US': require('date-fns/locale/en')
    }
})

```

Run `npm run dev` to recompile your assets.

Features
--------

[](#features)

- One To One Chat ( With Video Call )
- Accept Message Request
- Group Chat
- File Sharing

Usage
-----

[](#usage)

#### Get All Conversation and Group Conversation

[](#get-all-conversation-and-group-conversation)

```
$groups = Chat::getAllGroupConversations();
$conversations = Chat::getAllConversations()
```

```

    @foreach($conversations as $conversation)

        @if($conversation->message->conversation->is_accepted)

                {{$conversation->user->name}}
                @if(!is_null($conversation->message))
                    {{ substr($conversation->message->text, 0, 20)}}
                @endif

         @else

                {{$conversation->user->name}}
                @if($conversation->message->conversation->second_user_id == auth()->user()->id)

                        Accept Message Request

                @endif

         @endif

    @endforeach

    @foreach($groups as $group)

                {{$group->name}}
                {{ $group->users_count }} Member

    @endforeach

```

#### Start Conversation

[](#start-conversation)

```
Chat::startConversationWith($otherUserId);
```

#### Accept Conversation

[](#accept-conversation)

```
Chat::acceptMessageRequest($conversationId);
```

#### Get Conversation Messages

[](#get-conversation-messages)

```
$conversation = Chat::getConversationMessageById($conversationId);
```

```

```

#### Send Message

[](#send-message)

You can change message send route in component

```
Chat::sendConversationMessage($conversationId, $message);
```

#### Start Video Call ( Not Avaliable On Group Chat )

[](#start-video-call--not-avaliable-on-group-chat-)

You can change video call route . I defined video call route `trigger/{id}` method `POST`Use `$request->all()` for video call.

```
Chat::startVideoCall($conversationId , $request->all());
```

#### Start Group Conversation

[](#start-group-conversation)

```
Chat::createGroupConversation( $groupName , [ $otherUserId , $otherUserId2 ]);
```

#### Get Group Conversation Messages

[](#get-group-conversation-messages)

```
$conversation = Chat::getGroupConversationMessageById($groupConversationId);
```

```

```

#### Send Group Chat Message

[](#send-group-chat-message)

You can change message send route in component

```
Chat::sendGroupConversationMessage($groupConversationId, $message);
```

#### Add Members to Group

[](#add-members-to-group)

```
Chat::addMembersToExistingGroupConversation($groupConversationId, [ $otherUserId , $otherUserId2 ])
```

#### Remove Members from Group

[](#remove-members-from-group)

```
Chat::removeMembersFromGroupConversation($groupConversationId, [ $otherUserId , $otherUserId2 ])
```

#### Leave From Group

[](#leave-from-group)

```
Chat::leaveFromGroupConversation($groupConversationId);
```

File Sharing
------------

[](#file-sharing)

Run this command `php artisan storage:link`

#### Send Files in Conversation

[](#send-files-in-conversation)

```
Chat::sendFilesInConversation($conversationId , $request->file('files'));
```

#### Send Files in Group Conversation

[](#send-files-in-group-conversation)

```
Chat::sendFilesInGroupConversation($groupConversationId , $request->file('files'));
```

ToDo
----

[](#todo)

- Add Members to Group
- Remove Member From Group

Next Version
------------

[](#next-version)

- Group Video Call

Credits
-------

[](#credits)

- All Contributors

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

[Demo Project](https://github.com/Wqqas1/laravel-video-chat-demo)

This whole work is based on  but modified to make it compatible with laravel 5.7 this version does not work with laravel versions less than 5.7 for that you can download the original package

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 75% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~39 days

Recently: every ~133 days

Total

15

Last Release

2224d ago

Major Versions

v1.0.13 → v2.0.02020-04-10

PHP version history (3 changes)v1.0.0PHP &gt;=7.0

v1.0.5PHP &gt;=7.1

v2.0.0PHP ^7.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/63437278?v=4)[doctopro](/maintainers/doctopro)[@doctopro](https://github.com/doctopro)

---

Top Contributors

[![wqqas1](https://avatars.githubusercontent.com/u/20567910?v=4)](https://github.com/wqqas1 "wqqas1 (12 commits)")[![juanmos](https://avatars.githubusercontent.com/u/492572?v=4)](https://github.com/juanmos "juanmos (2 commits)")[![juanmoscoso](https://avatars.githubusercontent.com/u/49007377?v=4)](https://github.com/juanmoscoso "juanmoscoso (2 commits)")

---

Tags

laravelrealtimechatWebRTCSocket.iovideo-chat

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/doctopro-laravel-video-chat/health.svg)

```
[![Health](https://phpackages.com/badges/doctopro-laravel-video-chat/health.svg)](https://phpackages.com/packages/doctopro-laravel-video-chat)
```

###  Alternatives

[php-junior/laravel-video-chat

Laravel Video Chat using Socket.IO and WebRTC

82018.1k](/packages/php-junior-laravel-video-chat)[spatie/laravel-health

Monitor the health of a Laravel application

85810.0M83](/packages/spatie-laravel-health)[nahid/talk

Talk is a Laravel based realtime messaging, chatting and conversation system. It helps to develop users messaging, chatting and conversations in easy way.

1.6k58.1k4](/packages/nahid-talk)[clickbar/laravel-magellan

This package provides functionality for working with the postgis extension in Laravel.

423715.4k1](/packages/clickbar-laravel-magellan)[reedware/laravel-relation-joins

Adds the ability to join on a relationship by name.

2121.2M13](/packages/reedware-laravel-relation-joins)[api-platform/laravel

API Platform support for Laravel

59126.4k6](/packages/api-platform-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
