tp5.1+swoole+apache+https+wss直播弹幕

一、安装扩展下载swoole

看一下官网
tp5.1+swoole+apache+https+wss直播弹幕_第1张图片
Swoole目前不支持Windows,所以在linux下安装扩展,我用的宝塔
tp5.1+swoole+apache+https+wss直播弹幕_第2张图片
配置Linux下composer在任意目录运行
linux下下载swoole
tp5.1+swoole+apache+https+wss直播弹幕_第3张图片
用编辑器连接ftp同步线上线下代码(除了vender下的swoole包还有config下的配置文件swoole.php 、swoole_server.php)
我用的sublim需要安装插件,很简单百度方法很多

二、swoole配置

播放器用的是alipkayer,弹幕插件还有许多没弄明白所以下面只写和websocked的部分


use think\facade\Env;
// +----------------------------------------------------------------------
// | Swoole设置 php think swoole:server 命令行下有效
// +----------------------------------------------------------------------
return [
    // 扩展自身配置
    'host'         => '有证书域名', // 监听地址
    'port'         => 39139, // 监听端口
    'type'         => 'socket', // 服务类型 支持 socket http server
    'mode'         => '', // 运行模式 默认为SWOOLE_PROCESS
    'sock_type'    => SWOOLE_SOCK_TCP | SWOOLE_SSL, // sock type 默认为SWOOLE_SOCK_TCP
    'swoole_class'   =>  '', // 自定义服务类名称

    // 可以支持swoole的所有配置参数
    'daemonize'    => false,
    'pid_file'     => Env::get('runtime_path') . 'swoole_server.pid',
    'log_file'     => Env::get('runtime_path') . 'swoole_server.log',
    'ssl_cert_file'=>'/www/server/panel/vhost/ssl/域名/fullchain.pem',//证书地址
    'ssl_key_file' => '/www/server/panel/vhost/ssl/域名/privkey.pem',//证书key地址

    // 连接成功触发
    'onOpen'       => function ($server, $request) {
         echo '连接成功\n';
    },
    'onRequest' => function ($request, $response) {
        $response->end("你麻痹啊");
    },
    //断开连接触发
    'onClose' => function ($ser, $fd) {
        echo '断开连接\n';
    },
    //接受客户端信息时触发
    'onMessage' => function ($server, $frame) {
      //接收数据处理
        $fd = $frame->fd;//发送方房间号
        $data = $frame->data;
        $color = '0xffffff';
        $danmu = [
                  'mode'=>1,
                  'text'=>$data,
                  'stime'=>'',
                  'color'=>$color,
                  "size"=> 25,
                                   ];
          //广播给所有人
         foreach($server->connections  as $fds){
                // if($fds != $fd){
                  $json_data = json_encode($danmu, 256);
                 $server->push($fds,$json_data);
                // }
          }
    },
];

三、websocked

<script>
const client = new WebSocket("wss://必须是证书域名:39139");
//建立连接时触发
client.onopen = function() {

};
//通讯发生错误时触发
client.onerror = function() {

};
//连接关闭时触发
client.onclose = function(res) {

};
//客户端接收服务端数据时出发
client.onmessage = ({data}) => {
   //data 是收到的广播数据
    console.log(data);
   
  };
  </script>

四、Apache反向代理配置wss

tp5.1+swoole+apache+https+wss直播弹幕_第4张图片
启用 proxy_wstunnel_module 模块(去掉下面两行前#)
LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_wstunnel_modulemodules/mod_proxy_wstunnel.so
打开宝塔的网站设置,打开配置文件
在下面添加

ProxyRequests Off
ProxyPass /wss ws://127.0.0.1:7272
ProxyPassReverse /wss ws://127.0.0.1:7272

tp5.1+swoole+apache+https+wss直播弹幕_第5张图片

五、启动swoole服务

打开网站根目录
在这里插入图片描述
tp5.1+swoole+apache+https+wss直播弹幕_第6张图片

你可能感兴趣的:(swoole)