PHPackages                             wqqas1/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. [Image &amp; Media](/categories/media)
4. /
5. wqqas1/laravel-video-chat

ActiveLibrary[Image &amp; Media](/categories/media)

wqqas1/laravel-video-chat
=========================

Laravel Video Chat using Socket.IO and WebRTC

v1.0.10(7y ago)105805[1 issues](https://github.com/wqqas1/laravel-video-chat/issues)[2 PRs](https://github.com/wqqas1/laravel-video-chat/pulls)MITPHPPHP &gt;=7.1CI failing

Since Oct 14Pushed 3y ago3 watchersCompare

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

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

Laravel Video Chat
==================

[](#laravel-video-chat)

Laravel Video Chat using Socket.IO and WebRTC

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

[](#installation)

```
composer require wqqas1/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

32

—

LowBetter than 72% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 93.8% 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 ~1 days

Total

11

Last Release

2755d ago

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

v1.0.5PHP &gt;=7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/c3ce052151f525a84914d77a4ebab24512ae4cd56131f0006fdda8ec84417af1?d=identicon)[wqqas](/maintainers/wqqas)

---

Top Contributors

[![wqqas1](https://avatars.githubusercontent.com/u/20567910?v=4)](https://github.com/wqqas1 "wqqas1 (15 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

chatlaravelmessengervideovuevuejswebrtcwebrtc-videolaravelrealtimechatWebRTCSocket.iovideo-chat

###  Code Quality

TestsPHPUnit

### Embed Badge

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

```
[![Health](https://phpackages.com/badges/wqqas1-laravel-video-chat/health.svg)](https://phpackages.com/packages/wqqas1-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)[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)[api-platform/laravel

API Platform support for Laravel

59126.4k6](/packages/api-platform-laravel)[ralphjsmit/laravel-glide

Auto-magically generate responsive images from static image files.

4719.6k5](/packages/ralphjsmit-laravel-glide)[spatie/laravel-og-image

Generate OG images for your Laravel app

305.2k](/packages/spatie-laravel-og-image)

PHPackages © 2026

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