管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket# V! \: R+ x; c" |. T
上代码 前端 观看页面 - <script type="text/javascript">0 P9 A# e2 ?- K6 D$ g& h# I
- var ws = new WebSocket('ws://192.168.0.150:9502');+ Y* X: n @: x9 W1 W
- 7 v7 ~# V+ A; U8 C7 L
- ws.onopen = function() {
8 D2 ~2 ^, K9 q, t - console.log("连接成功");
* b; `( d3 s, @) r - };
2 `- w7 Z7 p `" C - ws.onmessage = function(e) {5 y8 S- e% `6 a) k& y% P9 e
- console.log(e);
" @1 P8 r6 C" I/ r( n% M2 i! z! w - 5 w# r7 t& {4 s( F& h% u5 T7 c
- var data = e.data;; t1 l5 f+ _7 z0 W1 M2 L
- document.getElementById('player').src=data;
% j; N' r! h0 F) R9 u; G2 W - };
3 a4 k1 \2 C5 i" O. U6 E! m - ws.onerror = function() {
( p0 r1 M9 u& H/ y" K+ T - console.log("关闭连接");1 A- U/ C \, o( ]8 j
- };: f7 s; r" a6 |2 `8 _
- </script>
复制代码录像页面
8 s6 j) l, ]9 }5 w4 N* m' U最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
1 C R! e: C( G/ N! J
9 C5 Z( U! f& K1 j) I! k: U; a$ ]- 1 c3 R. @) U& N8 G. B- N% n; \, @
( y7 m+ x, N @: w5 m! a- <script type="text/javascript" charset="utf-8">
( R! C' \& p& O; b - $ u& f" J; j( G6 `3 O
- & u* v3 @ @$ y+ r" o# ]0 {
- var socket = new WebSocket('ws://192.168.0.150:9502');4 }: {6 z- \( Q# V
- //socket.send("嗨我登陆了");, B/ w" l4 l; x" h/ G$ F9 C* C) H; z
- / P$ ?- t- D6 {, \
- var back = document.getElementById('output');
, A4 v9 L H3 A; D' N( A - var backcontext = back.getContext('2d');
) T. q2 C. C, U- v1 x# [5 K. f& d - var video = document.getElementsByTagName('video')[0];
, I# T/ |1 G2 F4 z - 8 R9 W2 M* N! g1 o0 O' ~/ \4 Z
- var success = function(stream){' u% n+ K1 `; z& N
- video.src = window.URL.createObjectURL(stream);6 v0 f: L6 r" T/ `* ]% ^
- }3 p+ [, X% h! x8 A1 w# T" w; _
$ R6 W& v1 p5 {7 x4 g- H- socket.onopen = function(){
$ x) z" l/ p# P - draw();
" x% |! H( `7 p V, a - }4 [3 C0 [! l' _
- " ?0 p6 u) I& R- M5 Z* r8 G6 g
- var draw = function(){
7 W0 P" k( W: m5 V' C - try{
- J; J6 x l# c; t, ^+ A+ h - backcontext.drawImage(video,0,0, back.width, back.height);1 Q% s$ v0 x; p
- }catch(e){; `7 a% e% ], v
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
4 \* A9 B6 x6 g7 o' @/ {' R - return setTimeout(draw, 100);
& T4 J* o8 D0 ~6 r+ t - } else {
- U& l0 |* F% Z) `* i" D# w6 { - throw e;- {! x: U; p; L7 t |- R
- }( N/ _2 H5 H7 }! y6 P
- }0 [ |4 J8 N8 ]; `( E
- if(video.src){0 S. `' \. V% k( j
- socket.send(back.toDataURL("image/jpeg", 0.5));
& @! W. b! Y7 R - }+ k' N: Y N4 f5 h
- setTimeout(draw, 100);) C; [% A# [) m2 P/ p1 j. y' j3 C
- }* v/ y: D# W; N, E$ e7 O
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
' f1 x% a( O4 w1 _. a4 I - navigator.mozGetUserMedia || navigator.msGetUserMedia;' t& g! d/ N- O0 N- Z$ l
- navigator.getUserMedia({video:true, audio:false}, success, console.log);' f0 I4 x6 ?1 J# e+ G4 Z. i
- </script>
复制代码- php
4 A% j) [# s% z" t* |0 g8 n2 J/ o# d - . {% X& {$ e3 E# W
- $server = new swoole_websocket_server("0.0.0.0", 9502);) y4 W1 v0 j" d' E8 v
- $ w0 P; @- Z" w2 g& ~4 K: I2 p
- $server->on('open', function (swoole_websocket_server $server, $request) {; Q! t; J( Y3 ^/ O" C5 {9 }
: F8 k! _& [; k+ G( c- echo "新用户id:{$request->fd}加入了\n";
' K6 ]. j$ e+ q" J - // echo "server: handshake success with fd{$request->fd}\n";% U2 j- a) N6 n& m, H, o' Z& L
- });
8 n& m$ g. ~' |" j5 j1 q
. s( y w' i1 h; J; z) P- $server->on('message', function (swoole_websocket_server $server, $frame) {7 V) x2 A: O6 G. W1 s) s
- 2 U3 a7 G; q d2 K9 Y, e% e
- //循环所有数据
& V) P8 n. E5 P6 @7 h8 e9 y - foreach($server->connections as $fd) {
; ], G P. p. f0 d2 c$ k - //返回数据3 i. ]& H% H$ F6 W) W3 Q( @8 b; b
- $server->push($fd, $frame->data);8 \8 ]5 S7 K! a6 t6 b8 a
- }
, F7 \" E, b* |2 g8 V( u8 k- W; i
0 C1 J! M, }% l* ~' H+ m! P- });
# ?: k' Z9 S( ]- w) V! B* A$ ^8 v - 4 W* `. O. @) X4 P7 u3 u4 F6 Y4 _
- $server->on('close', function ($ser, $fd) {7 v9 s6 X# |9 p9 z
- echo "用户id: {$fd} 退出\n";* h1 `& W& F1 D5 B7 m" ^
- });) m, ?3 O8 v- s) H
- V* {. D ]$ g' a; q) {. t
- $server->start();
复制代码 " _9 y" x L5 b0 k: ]3 w
7 G9 x/ }/ ^% u
1 E9 B b1 X, u- b- e
) e) J; h5 _& l0 J7 Q6 L
) c0 Y1 `- I8 k3 y# z! t, [
' ? q; Z. ]. y3 Y% N7 j9 O8 }1 q) e2 M" s" v( z
0 V2 ` g: ?: M3 G( o: O( _/ y6 ^4 m
; u C& \" i* Y, X& q
1 m& p: A6 q) J! N
# L7 d: u1 y0 i6 M$ `% H) B% B
|
|