管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket! c8 d8 R! @! A, v
上代码 前端 观看页面 - <script type="text/javascript">! g4 {0 Y; p3 s) @. q5 K% A
- var ws = new WebSocket('ws://192.168.0.150:9502');5 t% F! y6 l, Y0 U
6 h% w5 w, v1 D9 X- ws.onopen = function() {
0 H" _% K) ]6 u- h/ k - console.log("连接成功");
: ^7 x8 M/ b0 O8 ^' v - };
- G6 |; O s4 n+ u- a" Y. l" s: l9 s - ws.onmessage = function(e) {! L7 d1 L6 x% _
- console.log(e);9 x" }6 \) Q. x3 a$ k4 W" q) R7 A
- 9 E1 j5 D! ^/ Z$ D
- var data = e.data;, H+ k3 l' y: ^0 n2 T" {
- document.getElementById('player').src=data;
8 Q% R+ T& {" @5 a( A4 e+ q6 C+ \ - }; a( b+ M; P8 r
- ws.onerror = function() {8 K. p/ ]7 d; D# x6 R2 ~9 [" }) d
- console.log("关闭连接");
9 Y% @. U* ^8 U - };
, h! c8 z5 m- H - </script>
复制代码录像页面
" v" j! b- a# G; u# Z8 o% I, m最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>4 W% h$ @# a" \8 G( P( N
- p, S9 ] A5 C- S! S; V, A
# Q+ l' ]3 J' \1 _
, V8 U1 J! F0 J& Y/ f9 q8 Q- <script type="text/javascript" charset="utf-8"> I2 ~( C) l' L! C' P: ]& M
- + _7 h* Z0 Z v$ u% ?/ a
- 8 a5 p% s5 o- ~% c
- var socket = new WebSocket('ws://192.168.0.150:9502');, `! [ J) I( j- I. O) _% I! ~% X
- //socket.send("嗨我登陆了");
, `' E3 V2 S% | - ' Q% r1 Z' l1 ]( k8 \, w# a0 v
- var back = document.getElementById('output');3 |6 O% i! J. V1 I7 j: c* }& b
- var backcontext = back.getContext('2d');
5 J% F( V/ G9 C8 R) _- B - var video = document.getElementsByTagName('video')[0];
4 S1 x* [7 T/ c# l3 C9 D# L -
$ f; p1 C* c! K9 e8 v' d4 ?/ f8 J - var success = function(stream){
3 j- W& I5 C! b - video.src = window.URL.createObjectURL(stream);6 p8 x' L- ?( F0 w
- }
9 p' _9 A& B2 l& x2 A( F
6 H/ N4 w8 z) b0 m' c% l- socket.onopen = function(){
" W! n4 ]* b4 s' P - draw();% L& [+ I% F/ h9 c8 E+ R6 v) x
- }
7 ?* F6 _2 e% [' c' S - # |: [( w6 B0 ~
- var draw = function(){
' j0 {' P/ R( j" i6 S) j - try{
5 {( p$ G( L& t/ h n - backcontext.drawImage(video,0,0, back.width, back.height);! ?1 j+ p8 Y7 P6 K5 ?# V
- }catch(e){/ I( C2 s' a/ @. b* v
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
3 C4 H) ~4 }6 j3 M4 N2 Q - return setTimeout(draw, 100);2 p+ f t% x1 |6 r
- } else {
) \- ^7 ?- [5 W: |. e/ k# } - throw e;' f7 O1 |, {: |! ?. k
- }
* e3 b8 v8 S' g ~! r" d( t - }
7 O' u* }; u% w C3 x. T& Y - if(video.src){
4 O c5 H6 ^! O0 F - socket.send(back.toDataURL("image/jpeg", 0.5));
7 B4 X4 W% p8 p/ n5 i - }" y* E+ R: X' _3 _6 ^2 ?
- setTimeout(draw, 100);
" n) O0 N# R4 C$ O5 H - }
0 k1 ^" g; e* I0 D - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||* c B8 ~; I5 ~ w: w
- navigator.mozGetUserMedia || navigator.msGetUserMedia;; w4 f {* n( n. P& I4 B
- navigator.getUserMedia({video:true, audio:false}, success, console.log);! M6 J0 w) c# U- @5 X( Y* n
- </script>
复制代码- php( |, O$ h8 O8 y1 M
; x' T# V. K0 ]. o) [. u8 c- $server = new swoole_websocket_server("0.0.0.0", 9502);
& L, j1 d% C% n2 n0 t6 u' e" K
' Z7 w6 m- o; n2 U! Q. l- $server->on('open', function (swoole_websocket_server $server, $request) {" [ E8 d) C: k0 ^
6 k; k. F3 U, w; e! u) O- echo "新用户id:{$request->fd}加入了\n";! T$ a) B0 L1 W& ?. D' p7 J
- // echo "server: handshake success with fd{$request->fd}\n";
. _4 p/ k* z( W - });
$ I# M' Q. g9 n% x q3 `
+ f, C0 ^4 W; [& ]' \% h( `- $server->on('message', function (swoole_websocket_server $server, $frame) {2 M. k; d [" J) }4 P
- + M, @5 m1 C9 s$ n2 x; N& Q
- //循环所有数据0 l8 a4 S2 [: F, S$ x
- foreach($server->connections as $fd) {& n2 H2 {& I1 R: `/ T: v+ e7 c
- //返回数据
0 [: r; Z$ M: h - $server->push($fd, $frame->data);* {1 Q" J' ^% r
- }- ^& K- }- J7 D# c Q, b
- : X6 b6 r% V; e, k) N, F
- });
( C2 Z. t, d- i, U8 L
0 h4 v( b# w( t+ x1 S- $server->on('close', function ($ser, $fd) {
: k4 j' ~ q& c9 V- S' l; g - echo "用户id: {$fd} 退出\n";; j7 h& V& m0 s7 Z7 @' r. O
- });" i5 P j3 O/ N' S
+ ]) D( D9 L, p4 r0 `6 c2 r- $server->start();
复制代码
/ a3 Z4 B- @6 E# M) d; g+ C- ]( N. F# g" Q
. K ^4 c# C, a3 O6 L) D
. J" R0 }1 U |, V( f- n' x3 K7 N4 o( [8 ?2 L3 J
" J. S" ]6 M0 C( K* f/ _3 Q$ B5 E# i0 E2 l. ?! c7 F" _0 t, L1 D
6 _; u4 U+ u- ~8 p5 D; u
6 o9 ?! w0 s: E
* K5 C6 }' o& A, o
' S; v3 V6 O- \ S
( g1 n1 ?- y/ y |
|