admin 管理员组文章数量: 1086019
2024年4月25日发(作者:数组词开头)
第2期
如何构建实时弹幕后端服务
付晓明
(沈阳广播电视台)
【摘 要】本文介绍了视频弹幕网站后端服务的实现以及简单应用。
【关键词】弹幕;WebSocket;HTML5;Swoole
随着WEB2.0的流行,现在很多网站都流行
使用“弹幕”这种形式来实现互动。
弹幕(barrage),中文流行词语,指的是
在网络上观看视频时弹出的评论性字幕。类似
小说中行间彰显的批注,视频中屏间飘过的评
点叫做弹幕,原意指用大量或少量火炮提供密
集炮击。当大量吐槽评论从屏幕飘过时效果看
上去像是飞行射击游戏里的弹幕。
弹幕视频相比于传统视频的优势是增加了
网友的互动性。以前看视频,有什么感想就发
布在视频后面的讨论区。但弹幕网站就像大家
在一起看视频,有什么感想随时都可以打在屏
幕上。有的视频内容平平,但是由于有那些精
彩的弹幕而获得了较高的人气。
那么如何给自己的网站增加弹幕功能呢?
弹幕的后端其实和公共聊天室的后端原理十分
相似,都是一个客户端发送消息给服务端,服
务端再将收到的消息广播给其他的客户端。前
端如何与后端通讯?用传统的ajax是否可行呢?
各大火爆的直播平台都是同一时间几万人在
线,几千人同时发弹幕,如果靠ajax轮询一个接
口,服务器端开销太大。且弹幕消息存储方案
略显复杂,因为ajax使用的HTTP协议是无状态
协议,A客户端和B客户端之间对于服务器来说
没有任何标志,如果服务器要确保A客户端和B
客户端分别在两次请求的时候服务器只返回这
两个客户端没有获取过的弹幕消息,那么服务
器端就必须使用一个缓存来标识某某客户端看
过哪条弹幕消息。综上所述,ajax可以实现小规
模的弹幕通信方案,但效率不高。
好在最新的HTML5中加入了WebSocket协
议,可以通过WebSocket这种基于HTTP协议之
上的即时通信协议来替代ajax这种传统的问答通
信模式。本文以PHP这种非常流行的脚本语言
为例,初步介绍一下如何搭建一个弹幕后端服
务。PHP有一个Swoole扩展,在PHP语言中使用
它可以很方便的构建一个WebSocket服务端。
Swoole仅支持 Linux、FreeBSD、MacOS 三种
操作系统,需要PHP5.3.10或更高版本,并且不依
赖php的stream、sockets、pcntl、posix、sysvmsg等
扩展。安装Swoole也非常简单,推荐使用PECL来
安装,只需要一条命令:pecl install swoole即可,
非常方便。安装完扩展之后在命令行下输入php
-m检查,如果有Swoole那么说明安装成功了。
接下来就可以通过代码来建立服务端了,
WebSocket服务端示例代码:
//创建websocket服务器对象,监听
0.0.0.0:9502端口
作者简介:付晓明,沈阳广播电视台,工程师,主要从事网络广播电视工作。
·28·
中心技术
System Technology
总第100期
浅析广播电视监测机房设备的巡检与维护
于 灏
(辽宁省广播电视及信息网络视听节目监测台)
【摘 要】本文从辽宁省广播电视监测机房的现状谈起,在梳理和分析当前机房设备巡检中常见
问题的基础上,提出确保机房设备安全稳定运行的相关措施。
【关键词】重要保障期;安全播出;巡检;维护
一、前言
监测确保节目安全稳定播出既是广电总局
$ws = new swoole_websocket_server("0.0.0.0",
9502);
//监听WebSocket连接打开事件
$ws->on('open', function ($ws, $request) {
var_dump($request->fd, $request->get,
$request->server);
$ws->push($request->fd, "hello, welcomen");
});
//监听WebSocket消息事件
$ws->on('message', function ($ws, $frame) {
echo "Message: {$frame->data}n";
$ws->push($frame->fd, "server: {$frame-
>data}");
});
//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
echo "client-{$fd} is closedn";
});
$ws->start();
的常态化工作之一,又是每年监测工作的重中
之重。每逢重要节假日的重要时间段,广播电
视监管部门肩负着保障节目安全稳定播出的重
WebSocket服务器是建立在Http服务器上
的长连接服务器,客户端首先会发送一个Http
的请求与服务器进行握手。握手成功后会触发
onOpen事件,表示连接已就绪,onOpen函数中
可以得到$request对象,包含了Http握手的相关
信息,如GET参数、Cookie、Http头信息等。
客户端向服务器端发送信息时,服务器端触发
onMessage事件回调,服务器端可以调用$server-
>push()向某个客户端(使用$fd标识符)发送消
息。onClose是关闭事件,关闭的不是服务端,
而是客户端,可以理解为客户端与服务端断开
连接的事件。
建立连接后客户端与服务器端就可以双向
通信了。
运行服务端程序也是非常的简单,只需要
一句代码:php ws_。
至此,一个最基本弹幕后端平台就搭建起
来了。再配合前端js代码,可以同WebSocket服
务端进行交互,实现各种自定义的功能。
作者简介:于 灏,辽宁省广播电视及信息网络视听节目监测台,工程师,主要从事广播电视监测设备安装调试维护。
·29·
版权声明:本文标题:如何构建实时弹幕后端服务 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713976998a660181.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论