管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket9 c! |2 \; F: m# r
上代码 前端 观看页面 - <script type="text/javascript">
9 b" o" `) p7 _$ Q - var ws = new WebSocket('ws://192.168.0.150:9502');
9 _, |$ z# Q. b0 E
& d6 J$ w7 J4 \0 d& Y1 Q+ \- ws.onopen = function() {
2 g% [9 x& R& m9 ^: F7 s - console.log("连接成功");* ^3 k% @8 _1 O
- };) Z$ u+ x3 r! f* c/ V
- ws.onmessage = function(e) {
2 j" d0 ^3 v6 [" Y- ~" ]5 P5 i3 Q0 { - console.log(e);$ r0 ?4 [) V p! J
- ! b J+ @# }# R6 h. y5 g2 _
- var data = e.data;; h8 P. G9 _+ v5 `* r
- document.getElementById('player').src=data;+ ^. K p% h2 x7 A
- };
' f! G0 T# w% e/ O4 Z7 V! j - ws.onerror = function() {8 C% o2 {! ]+ |" a- m
- console.log("关闭连接");. L( c& T/ K+ | Y2 A" z8 h
- };
# I3 C+ u. F$ `. e - </script>
复制代码录像页面 . M3 `( C2 ^" B" a v
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
- K0 |% n1 C; E- l. Q$ y
2 s+ J+ h( x0 ^2 M0 `2 U# Y
* |. e* V8 g# U6 s, h6 D# J
' I: k4 o; g# S( J! O/ ^- <script type="text/javascript" charset="utf-8">
: b# [ C9 p* J6 V( X/ B, z
- ^( Z9 Q3 v5 i" q" H-
) t! d3 g. H, l6 K - var socket = new WebSocket('ws://192.168.0.150:9502');
; K, {7 Q2 K5 k& @8 C6 F7 o - //socket.send("嗨我登陆了");5 Y+ c( P1 a! N
- ! @1 U2 k8 x8 L4 ~+ k2 _
- var back = document.getElementById('output');
) T" m. {, [8 h1 g - var backcontext = back.getContext('2d');
1 x) w0 O7 x9 i - var video = document.getElementsByTagName('video')[0];$ J. b* c; |0 F/ H' S
- 8 c0 A6 }0 k5 S2 E
- var success = function(stream){$ z$ z; ^+ L7 g4 Z
- video.src = window.URL.createObjectURL(stream);6 ^4 r5 {) e8 s
- }' I0 d5 e9 w' p
2 a+ N9 T" G% [0 S) I% p; g' w- socket.onopen = function(){' R2 M/ d& J, k- a! r
- draw();
! T+ v' x- D: s) }+ l7 E - }
6 h( W- ^0 `- j0 t - / ?4 x7 Z% Z2 p
- var draw = function(){
% f( a/ @7 U7 y( \, Z" z - try{0 p' `5 h6 i& z3 u& w0 n
- backcontext.drawImage(video,0,0, back.width, back.height);
# X' v. u7 V0 h! |* Z0 M - }catch(e){% h* C& B" d" S0 V; t( d
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
: e* a- u; ?" J# G: ^* } - return setTimeout(draw, 100);
& X1 y w* C. ^3 n% S0 F - } else {1 ^/ M6 T: i% z
- throw e;& r8 R- v& I, f
- }. j$ c% b: W$ X) h ^1 B
- }! S1 F$ L+ ] c7 E5 O
- if(video.src){
8 m& u1 F( r! I+ s) s& [ - socket.send(back.toDataURL("image/jpeg", 0.5));
5 ~( g/ U3 C j) X5 V$ Q - }$ _0 c! K9 H( I" N0 w( i" S
- setTimeout(draw, 100);
2 c, e/ F" k. A% ? e0 g - }
0 w# m# Q- y+ ^/ V" p) Q6 y+ f4 ? - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
( X1 p6 l( g. ~4 j+ [3 K6 ^ - navigator.mozGetUserMedia || navigator.msGetUserMedia;
; @0 Q1 S1 M5 \9 [ - navigator.getUserMedia({video:true, audio:false}, success, console.log);
# j' e g7 @& I- e - </script>
复制代码- php
( v6 X3 D+ W) ?7 M! q. a - 5 J! H1 H4 J8 Q. c5 e) \. W
- $server = new swoole_websocket_server("0.0.0.0", 9502);
p# Y/ E# b" j! I; Z% T - " J1 E* z: p1 c, y! ]% @! j
- $server->on('open', function (swoole_websocket_server $server, $request) {6 s* `; D& l. y/ n0 G
- 9 \& t/ s8 i% U# a- X; h6 z3 t! I" W
- echo "新用户id:{$request->fd}加入了\n";3 u! d2 W5 P R* D, o; @+ f# H
- // echo "server: handshake success with fd{$request->fd}\n";
1 U8 C2 J* T2 z% U8 Y8 u - });
2 E6 P( f$ z9 K4 X* h4 ~ - : c" Z% K( {. N
- $server->on('message', function (swoole_websocket_server $server, $frame) {
5 t- n2 V; O# |# O
0 }: d# r {% q# C% ?- //循环所有数据
0 q, V$ A9 Q% ~: k! }1 d/ A) i - foreach($server->connections as $fd) {
6 p" E$ w D0 Z0 g3 u5 D - //返回数据, z; x$ V- b: B
- $server->push($fd, $frame->data);1 v: O! z6 G: K! M0 }8 ?7 d
- }+ J* a% y- X' a6 u4 `1 ?
v5 n: W- B1 R8 B# J) n* {2 t2 I- });
9 x" a* S) [" a4 T) v0 Q - " } h* g1 @% J' y! U
- $server->on('close', function ($ser, $fd) {- G. J" [8 }/ g: W8 j6 E, t+ w% _
- echo "用户id: {$fd} 退出\n";. U3 n$ u& }" j9 z# S- @3 `
- });% k% H* `; b! B
- / D e8 J( H: O* G4 P8 a
- $server->start();
复制代码
$ M- s7 I* N5 C& q) h9 K3 Z
6 A8 r$ T; r, X5 w/ F
) h0 w! y8 F5 Y
: d q T% j+ d$ O/ P; w. v" ]% U. A+ T
9 x+ C. @; p7 Q2 w) ]# z. h0 r. X$ [0 y) T2 s* A
: e) v3 N/ |% c6 A; w' U9 x5 E
' \" \8 I7 P" |
( ^) K- e6 \$ j9 O5 Q }+ B
, a; w4 X) @4 i) @/ w8 e! @. O+ Y8 E4 c9 v( p
, u: ~! ^( @- F' e1 {8 l
|
|