管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket9 S, z; r8 x1 l! m4 l
上代码 前端 观看页面 - <script type="text/javascript">
- ]* b4 ]: |1 T, Q2 Y0 F. ` - var ws = new WebSocket('ws://192.168.0.150:9502');
3 D: m# S) [. h( a6 ?, X - 7 {0 i+ M- j' n5 n- h0 a
- ws.onopen = function() {/ W" H' |. r1 }) G+ C8 e3 U- t
- console.log("连接成功"); ?1 y. E7 K( X; ~
- };3 G h6 b: e: i8 W8 ]7 r) S9 f
- ws.onmessage = function(e) {
$ O% F p" X! b% C - console.log(e);9 q: S1 K$ w& k. \6 z
- 0 x! I2 ]0 R( p
- var data = e.data;4 P9 [6 o3 Z* y, [
- document.getElementById('player').src=data;
: r- R' t$ O+ C) C - };, \# n7 n2 ]+ v
- ws.onerror = function() {
' [6 } Y, x! {3 z- k! O) B! W" y8 q - console.log("关闭连接");
+ ~1 e" F% h# ]6 D/ s L - };
% ~. q1 [/ O6 l - </script>
复制代码录像页面 $ v: e1 l/ y6 @& T$ t7 `
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
- l/ ]( c: d4 l' {. a; `( |8 E
& _7 q9 l) l- a+ x& R
# W" f& p) m% G& U3 y- 8 c/ t x& v5 L5 Y2 {
- <script type="text/javascript" charset="utf-8">6 d3 _9 D8 A1 e' C1 ]1 \- B
3 m' a% V7 P- X2 X2 S: X- 3 m7 J3 k o9 L" n) l8 S: l2 i$ A
- var socket = new WebSocket('ws://192.168.0.150:9502');: e& F3 L" G! e; B; _! k s
- //socket.send("嗨我登陆了");
% I2 y& ~# Z4 ?
. O8 K! d& \0 R6 ~" q- var back = document.getElementById('output');
4 s6 v3 ~. S, q - var backcontext = back.getContext('2d');) f: u( Z8 Q4 m7 n2 ^$ N- F l k
- var video = document.getElementsByTagName('video')[0];
6 a( k# Z+ Q9 O" t - . K$ y0 s/ v& |2 a7 y4 W6 r; Z
- var success = function(stream){' d# ^$ V5 ~2 ~- ^& \6 g( N, H
- video.src = window.URL.createObjectURL(stream);& z; z- a8 S2 `9 `1 x
- }+ ^8 O+ W/ I h: U, Z
: B9 Y, M8 q! w* F3 ]9 G0 _- socket.onopen = function(){
& c. Z1 `; }$ z# o X F - draw();% b' [ \5 H9 Q3 ]# c: M2 n
- }
; i5 y) |" X8 Y2 C- d2 ?( f9 b
3 ^' F3 s# W; }. L) n. X- var draw = function(){
1 {2 K: y* c3 ]. K9 A - try{
h1 R: s9 m2 w2 h; M: k - backcontext.drawImage(video,0,0, back.width, back.height);; h* e# ~0 H& V3 I+ b
- }catch(e){
& ~; V Y+ l( h8 u - if (e.name == "NS_ERROR_NOT_AVAILABLE") {7 n* Z, e: A/ g* ?# |: h5 f
- return setTimeout(draw, 100);) U- E( [' K1 {" v- M
- } else {
9 Y W) y: U m' o' Y - throw e;
3 P! o) o9 w3 n. m: n6 Y - }" v4 Y5 j; g: f0 \1 z/ x' `4 }
- }
6 C: c* [6 `7 \/ _ - if(video.src){% l9 R* W6 r, i4 w3 s2 @) `
- socket.send(back.toDataURL("image/jpeg", 0.5));
; ?2 }9 Z% W d, U0 A+ g1 z - }& m2 {! Q% z; h/ L
- setTimeout(draw, 100);
3 v6 d9 H! b' z+ |7 m. `( ~- B - }
! J. Z0 X# A4 H2 X - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
# Q% v0 |& J: L- `9 @ - navigator.mozGetUserMedia || navigator.msGetUserMedia;
8 r) o9 n* G8 F/ d" s - navigator.getUserMedia({video:true, audio:false}, success, console.log);
1 \0 X$ r* u4 P - </script>
复制代码- php
( s) ]. C# t$ s) q. V, ] - 5 N4 y- J7 a4 X4 Z1 ^2 L6 o
- $server = new swoole_websocket_server("0.0.0.0", 9502);- R/ f$ F! w( T
" Q+ K6 ~. t5 ~% U* G- $server->on('open', function (swoole_websocket_server $server, $request) {
* {+ m! y. {/ G0 I. e: A - o- \3 N5 |1 y) x8 D0 W
- echo "新用户id:{$request->fd}加入了\n";
! b! X9 h) A; Q" a; F _& g - // echo "server: handshake success with fd{$request->fd}\n";
- ]- f/ Z( z. t& [ - });9 |& L' X% {6 K* [& C5 Y
1 `2 @8 N! I# d! \: E1 d% |- $server->on('message', function (swoole_websocket_server $server, $frame) {/ Y0 ]' n0 t; D: n+ d
4 a9 |5 O1 |) N- f* w4 ~- //循环所有数据
% Y9 w$ }* s) y7 U$ K t$ b0 m. C - foreach($server->connections as $fd) {
/ }% h8 d8 e8 h& h- p% |; S - //返回数据
& `, ~9 U6 k8 y/ s7 G - $server->push($fd, $frame->data);2 W( Y* \2 I+ |/ Z( s. m
- }" } {1 ]- M! B: L6 n9 c8 O
- M. Q f5 n5 P/ h: L- });
2 b' n2 O0 B8 q - 5 ]: p% j* m4 Y7 u1 U% E
- $server->on('close', function ($ser, $fd) {! T$ Z o! P/ a5 K3 z
- echo "用户id: {$fd} 退出\n";3 j' H) J& [6 \2 L1 t
- });: T4 j" q( l+ T& }! f
# E& E+ m- _7 h9 \- $server->start();
复制代码
: L X" d3 h9 c6 M( Y9 j% M2 T
8 g6 s% r, F" P9 {, D7 \) q' J: D- l. B5 s& F. X, h$ a, B
) E- H2 u/ m u! ]% J; w7 T1 ^7 S/ o# M3 g" U
- C/ r& ]" c9 L1 Z8 ?! P4 h. M8 ~
9 Y2 x3 T& w, v: D! m$ Q( G+ U1 L% y( h8 l
$ d6 h, m9 [6 w
5 n4 L: z* ^6 m* p3 t- g6 f& V$ x! v: `2 o0 V/ p9 x
6 C9 F! L! r1 t$ [) z/ E: S
|
|