管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket2 L6 H; _8 G$ ], A7 V
上代码 前端 观看页面 - <script type="text/javascript">
: c9 V- |! P4 g/ F- X - var ws = new WebSocket('ws://192.168.0.150:9502');
7 _3 u: R& X( `& D b, D; K
/ Q6 |! K$ A8 B& M1 G0 ]) I- ws.onopen = function() {9 J# J A) c" [( F3 U. {3 ]. }7 z
- console.log("连接成功");
& `) ~7 \: p l - };
# D5 l; S) T# Q" |2 k* P) |, @ - ws.onmessage = function(e) {
( f H3 b2 F" l - console.log(e);# {2 ^ u3 a/ K6 ]8 [3 C9 }1 Y
- " G8 n/ ^8 {: @7 U/ a
- var data = e.data;
4 x- D& e/ t5 Z- B - document.getElementById('player').src=data;
- B) x% R3 ]4 H; c- M0 m - };
# }: a1 T, k' ], n- b - ws.onerror = function() {1 m9 }: f) G$ C; e, t
- console.log("关闭连接");! `' |- A! H3 D" ?. X! S. h
- };5 i" S$ @- C) Q& R
- </script>
复制代码录像页面 7 i, g' G" a. h" E7 B' F3 ?5 F+ P
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>. c* h4 p% h! m3 p- z, D8 U4 ?
- ! [% i3 B; A+ d0 F0 ^
' B( b" X! W& c1 C2 c
, s: t0 ]6 a6 \8 P- <script type="text/javascript" charset="utf-8">
( f' ^; I) g& B
$ G1 r* M4 Q9 x) Q-
& k6 b2 N! D T& g& i) \ - var socket = new WebSocket('ws://192.168.0.150:9502');2 E6 U9 |% A* ^* V7 _
- //socket.send("嗨我登陆了");
( ^6 f( w; ?$ \" Y
2 r% Q4 @1 P( B3 U. ~- var back = document.getElementById('output');
& x- Q/ \0 ?$ ? - var backcontext = back.getContext('2d');& P' c. z# T, q& H2 r
- var video = document.getElementsByTagName('video')[0];
: k/ A6 N3 q# Y4 h i' K' M, s - 7 l" V9 f( e* j7 I1 N% ~
- var success = function(stream){
6 W0 q2 Q' r5 k/ n8 N- A, i" A* r; w - video.src = window.URL.createObjectURL(stream);
+ T! `7 t) ^ i, q - }% w3 K. f3 \! Q0 V" R5 }
$ m6 J7 ~) [* ]1 R- socket.onopen = function(){% _1 M/ r3 O% Z+ ^+ @! a
- draw();
! f0 V6 O" Y' D - }
6 C! X; G3 f! n
# H$ C6 r$ w% m, v o3 E/ D+ Q- var draw = function(){
( M; @# k4 Q& u/ O/ R: Q2 h - try{$ M0 U8 p1 z; s6 W8 X E
- backcontext.drawImage(video,0,0, back.width, back.height);
* }9 H" s s* t' Z7 `3 o' Y. L- U( }4 y3 b - }catch(e){, Z4 C8 [; J V8 s4 B( a$ L
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {5 w! Y; f/ z5 Z3 Z& K! e5 \% \( i8 q2 }
- return setTimeout(draw, 100);
; n- {( T3 f' v! R) p - } else {
& ~4 w1 `8 N. }' b; A3 y* G9 { - throw e;
z0 h! k/ x% V# }: u - }+ @. [& G0 w9 m/ h
- }
% B0 X( k6 l) ]3 ?' A( W - if(video.src){
* W0 V: T7 b. v& N - socket.send(back.toDataURL("image/jpeg", 0.5));
: B- P: [; E" u' l - }
: b- f* @! x% H5 `/ n. c# F - setTimeout(draw, 100);0 `4 G( n% p; C! ~
- }% ` W4 k5 X* H" B# y
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||1 q; A8 R% C0 F2 @3 O: e
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
* n$ ], c: p; ?" }( T! p) q4 m - navigator.getUserMedia({video:true, audio:false}, success, console.log);
4 A+ M5 N) E& `" T7 \2 ^5 d - </script>
复制代码- php# K& u/ S3 _( b/ H1 B1 O( E7 ]
2 c: r- Z7 F8 y' t( g3 h( G- $server = new swoole_websocket_server("0.0.0.0", 9502);, o$ `) A1 o1 D- t7 V ~2 r8 B
- 9 I. i2 Q8 V4 W
- $server->on('open', function (swoole_websocket_server $server, $request) {
n1 @) \; p: `: {4 l3 E - ! c* q N3 g' y* |* c! T
- echo "新用户id:{$request->fd}加入了\n";
' c/ h% ]9 D: Q- }5 m ] - // echo "server: handshake success with fd{$request->fd}\n";
# o' k1 p' D" z9 T - });; }' }' O1 l3 v# i+ s2 y
- & ~" H' b) G) ~5 m& _
- $server->on('message', function (swoole_websocket_server $server, $frame) {
( ]& S c, x8 M$ J# d
3 a" K; n! v+ h! b- //循环所有数据
4 ?6 b! J p; M/ x; r; [# Z - foreach($server->connections as $fd) {
) K" A' w& A, J% e$ j2 U - //返回数据
! |8 P6 M7 E* ^6 A0 K6 v - $server->push($fd, $frame->data);; z. _" y% z/ T' D
- }
% |. A; o: {; r. c - ! p( T' k- [& L
- });1 d! `' C! ^! t9 _3 Z9 P. o
- 2 {& }6 k, J* P( u
- $server->on('close', function ($ser, $fd) {, N# c; m- t9 }+ r- f
- echo "用户id: {$fd} 退出\n";
) n3 n3 g2 g% k0 M: `1 K - });0 W( S! b& t. v% N& e/ v" f
- 9 {9 s. q$ W2 X" K
- $server->start();
复制代码 ' s/ C7 b6 J3 e( I* ^& n
+ j, `- H" e- J# q; Q& U9 J
. C( Z4 l w. [' Z
3 y0 }" P& Q* S5 u6 s" B' U
2 z: S9 G( N6 o, L
( R$ i- e& B+ v5 f( x
8 B# N& i# @# n4 B8 E5 A: R( I" y6 e2 Z' I
& O( Y4 S1 P6 t! Y
' i+ T+ u! |* c' m$ _- Q1 B% A+ L9 z% O% n3 D
T- [ ]) `5 \6 U- L+ S
|
|