您当前的位置 :首页 > 学习资料 > swoole 直播
投稿

swoole 直播

2021-03-21 21:01:01 来源: 作者: 责任编辑:cncml

主要使用 webstocket
上代码
前端
观看页面
  1. <script type="text/javascript">
  2. var ws = new WebSocket('ws://192.168.0.150:9502');
  3.  
  4. ws.onopen = function() {
  5.     console.log("连接成功");
  6. };
  7. ws.onmessage = function(e) {
  8.    console.log(e);
  9.  
  10.    var data = e.data;
  11.    document.getElementById('player').src=data;
  12. };
  13. ws.onerror = function() {
  14.     console.log("关闭连接");
  15. };
  16. </script>
复制代码
录像页面
 
最好用火狐测试。
  1. <canvas id="output" style="display:none"></canvas>
  2.  
  3.  
  4.  
  5. <script type="text/javascript" charset="utf-8">
  6.  
  7.  
  8.     var socket = new WebSocket('ws://192.168.0.150:9502');
  9.     //socket.send("嗨我登陆了");
  10.  
  11.     var back = document.getElementById('output');
  12.     var backcontext = back.getContext('2d');
  13.     var video = document.getElementsByTagName('video')[0];
  14.    
  15.     var success = function(stream){
  16.         video.src = window.URL.createObjectURL(stream);
  17.     }
  18.  
  19.     socket.onopen = function(){
  20.         draw();
  21.     }
  22.  
  23.     var draw = function(){
  24.         try{
  25.             backcontext.drawImage(video,0,0, back.width, back.height);
  26.         }catch(e){
  27.             if (e.name == "NS_ERROR_NOT_AVAILABLE") {
  28.                 return setTimeout(draw, 100);
  29.             } else {
  30.                 throw e;
  31.             }
  32.         }
  33.         if(video.src){
  34.             socket.send(back.toDataURL("image/jpeg", 0.5));
  35.         }
  36.         setTimeout(draw, 100);
  37.     }
  38.     navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
  39.     navigator.mozGetUserMedia || navigator.msGetUserMedia;
  40.     navigator.getUserMedia({video:true, audio:false}, success, console.log);
  41. </script>
复制代码
  1. php
  2.  
  3. $server = new swoole_websocket_server("0.0.0.0", 9502);
  4.  
  5. $server->on('open', function (swoole_websocket_server $server, $request) {
  6.  
  7.     echo "新用户id:{$request->fd}加入了\\n";
  8.    // echo "server: handshake success with fd{$request->fd}\\n";
  9. });
  10.  
  11. $server->on('message', function (swoole_websocket_server $server, $frame) {
  12.  
  13.     //循环所有数据
  14.     foreach($server->connections as $fd) {
  15.         //返回数据
  16.         $server->push($fd, $frame->data);
  17.     }
  18.  
  19. });
  20.  
  21. $server->on('close', function ($ser, $fd) {
  22.     echo "用户id: {$fd} 退出\\n";
  23. });
  24.  
  25. $server->start();
复制代码


 
文章来源: 责任编辑:cncml
版权声明:
1、本主题所有言论和图片纯属会员个人意见,与本网站立场无关
2、本站所有主题由该文章作者发表,该文章作者与享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
不良信息举报信箱 新闻热线:18733599993 技术服务:18733599993 网上投稿
关于本站 | 广告服务 | 免责申明 | 招聘信息 | 联系我们
在线网 版权所有 Copyright(C)2005-2025