管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket8 C0 T$ I. Y' _; H- Y
上代码 前端 观看页面 - <script type="text/javascript">- x+ ~) c5 J8 V7 R% [
- var ws = new WebSocket('ws://192.168.0.150:9502');
, u4 w3 _% C9 I, T/ e$ V! B - 5 e1 g, O2 ~+ b! e4 m
- ws.onopen = function() {
% y3 M& a$ K u- V v" T - console.log("连接成功");& x, |$ c) _( Q; R
- };
. w; h! d4 } i# G& I - ws.onmessage = function(e) {
4 N; y: q# E( Y/ w0 ]6 S* | - console.log(e);
# }1 E& a3 {% k# L
: E* |$ G5 Y) r& _- var data = e.data;
# R# K: }$ w, c7 Q$ r/ K# m5 T7 f - document.getElementById('player').src=data;9 v7 ?" L' m: y5 {% }
- };$ [& L: [6 f! F3 {/ V$ A
- ws.onerror = function() {7 i* B2 P) X |" p. F- e9 O
- console.log("关闭连接");
. E/ R7 y0 ?9 [5 S) [2 G - };/ \7 E% J t) }- \. u
- </script>
复制代码录像页面 + L0 M+ C1 x+ W/ I2 k' r
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>$ L, j3 k m* ~8 c; \* E# Q4 J- _' \) d
- " O j& j2 v' w7 D( Z& D$ y6 |8 J
- ' u* n q8 H# L
1 D( @% k$ b# t8 i- <script type="text/javascript" charset="utf-8">
1 ~/ v3 g( }+ z6 T; |: P - 9 M; w# V8 P; M$ [7 l! t- Y
-
9 t8 A# _! k, O8 h0 m& @ - var socket = new WebSocket('ws://192.168.0.150:9502');
4 x1 k4 r7 y- R - //socket.send("嗨我登陆了");* D. C% ?! O, ?2 O
- 7 b, d R7 O# U6 D
- var back = document.getElementById('output');
8 o% ^5 |( ]* u$ H& J - var backcontext = back.getContext('2d');
4 ~ l) B+ X, j: I9 L* } - var video = document.getElementsByTagName('video')[0];3 R/ h3 O* l/ S3 E
- 5 h9 \$ y/ w& j7 a( y
- var success = function(stream){+ y* n3 U8 o6 k; |: I
- video.src = window.URL.createObjectURL(stream);
' f7 t; e' B. { - }
) j/ y: e3 t) A' j7 b
. X c( o. G+ ]- socket.onopen = function(){
7 F! u! q) D1 K$ t/ f - draw();
d/ G3 K' {3 t. h/ h! p e% L. a - }
$ p: z F3 n" p: X- M
" J6 t% Y0 i; ^3 K- var draw = function(){/ q8 N- v; Q8 A9 \8 O8 w* [
- try{3 ~0 L1 `+ q/ k5 g1 y
- backcontext.drawImage(video,0,0, back.width, back.height);
# o* m/ X! A q" [- K - }catch(e){
% n! o" W) w' d! G* s4 b1 u& n - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
& J5 A& P( r$ b. G$ p- w& v - return setTimeout(draw, 100);
' W# o+ g F, [0 q2 O8 Q# Q - } else {
: r6 g% G! S: k8 _2 t - throw e;
8 L# T+ }3 ~4 c0 d* O. }6 z - }
" f. [9 {) w; g - }, J8 a0 W8 c1 d" o. C# @
- if(video.src){, Q, X7 J0 {5 N5 _, d
- socket.send(back.toDataURL("image/jpeg", 0.5));
4 p, R% @* H i$ ?/ ]" V - }8 i9 a0 |. G( w# Y; ~! v! k/ d
- setTimeout(draw, 100);
& Q3 I& ^$ w9 ^5 ?6 V5 |% P( y - }0 N! g @* q% T- Q1 [% l( S* L
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
7 B' g0 n$ w/ M4 l2 f - navigator.mozGetUserMedia || navigator.msGetUserMedia;8 h/ h! R5 n% o+ ~
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
/ u6 P& N6 p% k/ s+ t* o1 ? - </script>
复制代码- php0 o- c& [0 f; q3 J& E6 D* O7 S9 I
- 8 J- Z0 @( z* s# j9 X/ _& | v
- $server = new swoole_websocket_server("0.0.0.0", 9502);+ K7 o) T1 s8 \7 Y+ i1 }. A
; a2 A/ J% V( t- $server->on('open', function (swoole_websocket_server $server, $request) {6 e, k- M$ V" G& r* ]8 m
% f* g. k* J8 g: _3 C- echo "新用户id:{$request->fd}加入了\n";
% u* Q2 [4 r' a J$ \/ c - // echo "server: handshake success with fd{$request->fd}\n";
% w; s' p- j) v0 D2 e0 j0 Q( F - });8 X2 R' Y/ d) L; N9 g/ l
- ; `, T* f0 E* [' \" u* d
- $server->on('message', function (swoole_websocket_server $server, $frame) {2 Q( v* |/ c# i6 D$ e4 R0 }" W
/ K- t( y# W8 F- A- w- //循环所有数据0 G' w! j9 Z: U& p B
- foreach($server->connections as $fd) {$ E& E" e |! _
- //返回数据. [7 m: K, ~, F- Z7 A0 w, @/ C, R2 J2 c$ a
- $server->push($fd, $frame->data);6 f* r' b1 h+ p. V
- }6 U' }' A: O2 a
- ! K9 ]. t3 m0 o" C" B
- });
' n0 i8 i! `& ~* B! |) ?
4 |, E4 P: D4 t2 s9 x- $server->on('close', function ($ser, $fd) {
( q( J2 h T# U - echo "用户id: {$fd} 退出\n";
/ T* C2 |- h' d& H0 W' k8 Z6 C - });
8 k% K6 H- X: Z6 K3 X - ) j: [) Y5 g$ v# h& `
- $server->start();
复制代码 7 J, s& K/ w! a% V
/ o K1 ]+ U& P8 Y2 c# m8 o
8 t2 W, C8 i' o3 g% T0 o n3 G& T: ^' X. j+ p3 a0 x) \1 q9 U
5 ^( X) h$ \) V& p* k6 a+ Z; y- _' `9 p1 ?5 Y0 ^
# T, t! p: y+ S [- [% X0 p( u4 M# m3 H9 ?" L; I
9 C' }& N; R) O( a1 v8 _/ _
. O# q5 ^5 M7 ? Z( {7 `
& A& V' Y, D! f' U2 N' S- u1 i3 m1 }$ I0 {9 S) y
|
|