本篇文章给大家带来了关于Laravel8/LaravelS的相关知识,其中主要介绍了Laravel8基于LaravelS实现弹幕功能的方法步骤,感兴趣的朋友,下面一起来看一下,希望对大家有帮助。
Laravel8基于LaravelS实现弹幕弹幕功能
简介
(资料图片)
Laravel8基于LaravelS实现弹幕弹幕功能。前面学了基于Swoole实现视频弹幕功能,这篇文章就来实现一个基于Laravel8的视频弹幕功能。如果对webpack不熟悉,那么在安装vue-baberrage组件时可能会报错却不知如何解决。下面开始一步一步实现。
前面学了基于Swoole实现视频弹幕功能,这篇文章就来实现一个基于Laravel8的视频弹幕功能。如果对webpack不熟悉,那么在安装vue-baberrage
组件时可能会报错却不知如何解决。下面开始一步一步实现。
第一步:安装Laravel8
composer create-project laravel/laravel labarrage
登录后复制
第二步:Laravel8中使用vue
Laravel8如何使用vue,请参考 Laravel8中使用vue。
注意:安装vue时请使用 php artisan ui vue --auth
第三步:安装及安装vue-baberrage
安装vue及bootstrap
npm install
登录后复制
安装弹幕组件
npm install vue-baberrage --save
登录后复制
运行
npm run dev
登录后复制
如果遇到BREAKING CHANGE: webpack < 5 used to include
错误,请参考 Laravel8使用webpack报错的解决方法。
后续只要文件改动就需要重新编译,后续将不再复述。
第四步:安装LaravelS实现Websocket服务器
请参考 Laravel8使用laravel-s实现WebSocket服务器
第五步:项目中引入vue-baberrage组件
文件:resources/js/app.js 新增如下内容
import { vueBaberrage } from "vue-baberrage"Vue.use(vueBaberrage)Vue.component("danmu-component", require("./components/DanmuComponent.vue").default);
登录后复制
第五步:编写文弹幕组件
后续实现代码根据 学院君 文章改动
位置:resources/js/components/DanmuComponent.vue
<script> import { MESSAGE_TYPE } from "vue-baberrage" export default { name: "danmu", data () { return { msg: "hello 自如初!", position: "top", barrageIsShow: true, currentId: 0, barrageLoop: false, barrageList: [] } }, methods: { removeList () { this.barrageList = [] }, addToList () { if (this.position === "top") { this.barrageList.push({ id: ++this.currentId, msg: this.msg + this.currentId, barrageStyle: "top", time: 8, type: MESSAGE_TYPE.FROM_TOP, position: "top" }) } else { this.barrageList.push({ id: ++this.currentId, msg: this.msg, time: 15, type: MESSAGE_TYPE.NORMAL }) } } } }</script>
登录后复制
第六步:视图中使用组件
位置:resources/views/danmu.blade.php
@extends("layouts.app")@section("content") @endsection
登录后复制
第七步:注册路由
Route::get("/danmu", function() { return view("danmu");});
登录后复制
执行 npm run dev
第八步:编写websocket服务器
文件:App\Handlers\WebSocketHandler.php
fd); } // 收到消息时触发 public function onMessage(Server $server, Frame $frame) { // $frame->fd 是客户端 id,$frame->data 是客户端发送的数据 Log::info("从 {$frame->fd} 接收到的数据: {$frame->data}"); foreach($server->connections as $fd){ if (!$server->isEstablished($fd)) { // 如果连接不可用则忽略 continue; } $server->push($fd , $frame->data); // 服务端通过 push 方法向所有连接的客户端发送数据 } } // 连接关闭时触发 public function onClose(Server $server, $fd, $reactorId) { Log::info("WebSocket 连接关闭:" . $fd); }}
登录后复制
第九步:laravels.php注册
文件:config/laravels.php
"websocket" => [ "enable" => true, "handler" => \App\Handlers\WebSocketHandler::class,],
登录后复制
第十步:启动
php bin/laravels start
登录后复制
这样就完成啦
推荐学习:《laravel视频教程》
以上就是一文详解Laravel8/LaravelS实现弹幕功能的详细内容,更多请关注php中文网其它相关文章!