php-junior/laravel-video-chat
Composer 安装命令:
composer require php-junior/laravel-video-chat
包简介
Laravel Video Chat using Socket.IO and WebRTC
README 文档
README
Laravel Video Chat using Socket.IO and WebRTC
Installation
composer require php-junior/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
PhpJunior\LaravelVideoChat\LaravelVideoChatServiceProvider::class,
php artisan vendor:publish --provider="PhpJunior\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' => PhpJunior\LaravelVideoChat\Models\Conversation\Conversation::class, 'group_conversations' => PhpJunior\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
<script src="//{{ Request::getHost() }}:6001/socket.io/socket.io.js"></script>
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 GitHub repository.
In resources/assets/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: {
'en-US': require('vue-timeago/locales/en-US.json')
}
})
Run npm run dev to recompile your assets.
Features
- One To One Chat ( With Video Call )
- Accept Message Request
- Group Chat
- File Sharing
Usage
Get All Conversation and Group Conversation
$groups = Chat::getAllGroupConversations(); $conversations = Chat::getAllConversations()
<ul class="list-group"> @foreach($conversations as $conversation) <li class="list-group-item"> @if($conversation->message->conversation->is_accepted) <a href="#"> <h2>{{$conversation->user->name}}</h2> @if(!is_null($conversation->message)) <span>{{ substr($conversation->message->text, 0, 20)}}</span> @endif </a> @else <a href="#"> <h2>{{$conversation->user->name}}</h2> @if($conversation->message->conversation->second_user_id == auth()->user()->id) <a href="accept_request_route" class="btn btn-xs btn-success"> Accept Message Request </a> @endif </a> @endif </li> @endforeach @foreach($groups as $group) <li class="list-group-item"> <a href="#"> <h2>{{$group->name}}</h2> <span>{{ $group->users_count }} Member</span> </a> </li> @endforeach </ul>
Start Conversation
Chat::startConversationWith($otherUserId);
Accept Conversation
Chat::acceptMessageRequest($conversationId);
Get Conversation Messages
$conversation = Chat::getConversationMessageById($conversationId);
<chat-room :conversation="{{ $conversation }}" :current-user="{{ auth()->user() }}"></chat-room>
Send Message
You can change message send route in component
Chat::sendConversationMessage($conversationId, $message);
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
Chat::createGroupConversation( $groupName , [ $otherUserId , $otherUserId2 ]);
Get Group Conversation Messages
$conversation = Chat::getGroupConversationMessageById($groupConversationId);
<group-chat-room :conversation="{{ $conversation }}" :current-user="{{ auth()->user() }}"></group-chat-room>
Send Group Chat Message
You can change message send route in component
Chat::sendGroupConversationMessage($groupConversationId, $message);
Add Members to Group
Chat::addMembersToExistingGroupConversation($groupConversationId, [ $otherUserId , $otherUserId2 ])
Remove Members from Group
Chat::removeMembersFromGroupConversation($groupConversationId, [ $otherUserId , $otherUserId2 ])
Leave From Group
Chat::leaveFromGroupConversation($groupConversationId);
File Sharing
Run this command php artisan storage:link
Send Files in Conversation
Chat::sendFilesInConversation($conversationId , $request->file('files'));
Send Files in Group Conversation
Chat::sendFilesInGroupConversation($groupConversationId , $request->file('files'));
ToDo
- Add Members to Group
- Remove Member From Group
Next Version
- Group Video Call
Credits
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
Support on Beerpay
Hey dude! Help me out for a couple of 🍻!
php-junior/laravel-video-chat 适用场景与选型建议
php-junior/laravel-video-chat 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 18.22k 次下载、GitHub Stars 达 816, 最近一次更新时间为 2017 年 10 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「chat」 「laravel」 「Socket.io」 「realtime」 「WebRTC」 「video-chat」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 php-junior/laravel-video-chat 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 php-junior/laravel-video-chat 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 php-junior/laravel-video-chat 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This simple PHP class allows you to easily generate Smartsupp.com JS chat code.
Client for the REST API plugin of the OpenFire Server
Laravel Video Chat using Socket.IO and WebRTC
The Yii2 extension module to chat registered users.
Alfabank REST API integration
统计信息
- 总下载量: 18.22k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 819
- 点击次数: 20
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-10-22