【环球聚看点】一文详解Laravel8/LaravelS实现弹幕功能

时间:2023-02-09 12:05:31       来源:转载

本篇文章给大家带来了关于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中文网其它相关文章!

关键词: 连接建立 一步一步 来看一下