管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket9 F! D7 O% r9 Z( j" k1 b
上代码 前端 观看页面 - <script type="text/javascript">
8 ~, C+ z# ~% z0 Y - var ws = new WebSocket('ws://192.168.0.150:9502');
# [* |9 P5 s1 c# l8 F; s) R! x
/ D2 S- [+ Y d0 z% e7 {, E6 F$ E- ws.onopen = function() {# q1 Y8 ], l+ a% x7 n# @3 Z8 f
- console.log("连接成功");* T" r& h# b5 }$ g9 @# n
- };
1 d W0 z d+ B" O+ r, f. c5 `) [ - ws.onmessage = function(e) {
0 v: t: R- w5 d) m - console.log(e);
2 J: `6 }$ n& i9 {7 h& u; \" O' t& R - ( c2 ~8 |& C$ m
- var data = e.data;
1 w) j8 R' `, I1 N% h - document.getElementById('player').src=data;
% r( |, H3 ~2 `7 Q- N - };
2 P. o* i" @# i" ^ - ws.onerror = function() {1 j. g1 b% T2 J! F' U5 \
- console.log("关闭连接");
/ [/ i% A7 y$ N* l - };
( [( g. m6 H! M+ \# j4 N/ b( ` - </script>
复制代码录像页面
' R8 N* u; K6 H+ F最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>: a. I9 h/ w0 p* N$ j1 r
- 8 w- @# @+ R( m- ?$ o/ v T
3 e! Y# p3 H* _: c( e( K" ~
& H4 I2 R& r J: }: B; Z& ~3 |- <script type="text/javascript" charset="utf-8">: n' P! | d q% J1 {6 R) G
5 O' V ]* A# g2 B1 }4 `% M5 r1 ]-
/ Z6 r/ c; G0 x4 c, ^3 r - var socket = new WebSocket('ws://192.168.0.150:9502');
0 Z4 }' V9 J1 ]: a+ m+ B - //socket.send("嗨我登陆了");
- q' _" k+ G. K+ n t( D& }+ K
; e3 O) j6 b8 j, u/ V- var back = document.getElementById('output');: S( F1 L+ J3 N: K$ ~
- var backcontext = back.getContext('2d');6 g& Z- s& K! v" n& `# Y
- var video = document.getElementsByTagName('video')[0];. f1 N9 l3 z4 M3 c( D/ T
-
7 I1 N, {. }! ~: K% f: z - var success = function(stream){- Y' o# R' r( {6 [7 _0 m m
- video.src = window.URL.createObjectURL(stream);
% k: Q; e. s' q" J1 Z - }7 Y! V" t" l7 Q
- # ?- q; _& S- g) K0 L0 f
- socket.onopen = function(){
% h$ ?& x& |7 V0 h# M - draw();
8 Y" r" P2 u: ?8 U8 Z9 b2 K - } C9 A' F4 v' r- P) o/ I( T4 Z" Z
- ! L/ V; u+ N1 i$ ?% p
- var draw = function(){
, j- r" T2 r/ y* \2 j6 i& Y - try{
/ R! `1 F/ d- N( T - backcontext.drawImage(video,0,0, back.width, back.height);9 p* e( s; N/ @0 l- p# i0 j
- }catch(e){& W* F) }* }) T: r
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
, z. o7 L- M5 e! o - return setTimeout(draw, 100);
6 l+ j. i! R* p# ] - } else {
7 F6 y6 N0 m2 q6 g1 p - throw e;% w# M' ]2 ~' ~. ~ b( E
- }
' F3 }6 s; }6 C6 j g - }
5 P# X) K6 d! o& s0 k* H4 E - if(video.src){
7 q4 b) u' H% K - socket.send(back.toDataURL("image/jpeg", 0.5));3 F# x0 ~7 D+ ^& h$ I6 s
- }+ k; [ _0 }5 ?7 p. q2 G! X, K3 u
- setTimeout(draw, 100);6 Q m+ O: X3 J; h' @" j/ c1 s
- }
' ?4 j6 R: o/ Y6 y* y - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||# e3 N0 `) b. M9 ~4 \+ r, C6 N6 N
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
, J: y- b: P. Q! J1 u9 X! [ - navigator.getUserMedia({video:true, audio:false}, success, console.log);
9 B o2 m6 e I1 n* r+ b0 J% X - </script>
复制代码- php
4 S# }7 E2 g8 G- q: _ N - . @3 H1 l3 U" _) n: ^4 v2 o- c: l. Z
- $server = new swoole_websocket_server("0.0.0.0", 9502);1 b' ]1 i2 _2 C- @3 U# W
5 F; ~0 ~! g5 V' \0 O3 a& ?- $server->on('open', function (swoole_websocket_server $server, $request) {( x2 |2 n2 z+ n s
- # S. f; u6 E8 i+ [% Q
- echo "新用户id:{$request->fd}加入了\n";
0 I5 T4 y) C. `& E) e - // echo "server: handshake success with fd{$request->fd}\n";
5 A7 I9 u/ }# Q! U8 b - });
) ~5 m+ D) u6 W. X
, ]4 q& V+ ~& d4 F" s$ Z- $server->on('message', function (swoole_websocket_server $server, $frame) {
6 X; W$ @2 |: u6 ]% p. t" a - % Y `% l( n8 U
- //循环所有数据
1 O! ]$ U7 F$ d. p5 i - foreach($server->connections as $fd) {
; w$ V. S: F& L$ F4 z - //返回数据
/ x5 H' R6 W, v1 D& r - $server->push($fd, $frame->data);7 B' D' x! r$ e, p- {0 t" |' O! z
- }
0 j0 |" h# C2 E8 i; K2 k - 6 Q1 u5 Q) v0 y
- });2 \3 u3 y0 o2 u8 O, ?
8 n5 `4 ]5 p5 ]. b- [- $server->on('close', function ($ser, $fd) {8 M% @4 K- d( g
- echo "用户id: {$fd} 退出\n";
/ w& v6 @( T* U1 r, M* o7 x* ^3 @ - });
' e Z4 U# d' Q7 T4 I
c b! A4 C! p m- $server->start();
复制代码
, b# ~7 @) s5 [+ ~6 v4 B7 E- Z8 P. a0 k' t @9 B0 I
) x' B! y! x: P+ p! m8 S: z+ |& W
, Q, @- F6 M6 ~$ p! r" r( }; V" s+ _0 Z
) b3 _$ |2 H8 M! s
8 n! F5 j7 e) w: q @* C! e0 ~8 X8 |
) @$ t0 r% f9 p5 B, H) ^
$ ?* U4 p$ y- V% l( W& Y0 s3 r x f4 h! v1 v. A/ `" Q
. a& g. ~* [' [) ^: }' S. M
|
|