管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket' p, K G" W; }8 _
上代码 前端 观看页面 - <script type="text/javascript">; @+ D, Y6 \( q% ?
- var ws = new WebSocket('ws://192.168.0.150:9502');3 J8 S7 j! ^( a+ t
2 c/ \9 ?- O ^3 t$ T- ws.onopen = function() {. U/ y5 D. g5 o) I, W
- console.log("连接成功");1 }+ ? ~* y5 U1 E
- };7 N0 @- X7 e& ?( U
- ws.onmessage = function(e) {
7 s6 D* [; K: [. q$ ^ - console.log(e);( C3 y" H* v8 e2 z
- 4 F/ P5 ]; x7 Q- F9 y" C0 m
- var data = e.data;
/ C6 G+ G( D# [3 N4 v( X - document.getElementById('player').src=data;1 M, H u1 Z2 w' |% m
- };
. w: p; W% I0 [. w - ws.onerror = function() {+ J" l- Y( x' L8 F* n
- console.log("关闭连接");
/ Q# X, P, H* Z) O6 C - };( ?8 U% b. I4 y' m0 T* Z& l& H
- </script>
复制代码录像页面 0 E1 f2 b; u4 ?
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>9 ~$ i* o5 r7 w
- ; Y C {1 C" [
8 `% m" o: @: o- t2 K1 k
0 _( d1 ?' C# {: S- <script type="text/javascript" charset="utf-8">) L6 s8 q! g% H7 T( }
$ M* T* y! r( }6 w: j0 |-
+ N# i. L$ u7 [( w- J8 [1 P - var socket = new WebSocket('ws://192.168.0.150:9502');
% h9 u ]! z3 _( i6 J7 p9 s - //socket.send("嗨我登陆了");
- s- G4 r9 V1 q - 7 D2 E t8 {5 l( U" s( ?
- var back = document.getElementById('output');7 f& l9 M3 {; E G! D$ r% \
- var backcontext = back.getContext('2d');5 {; k# x% _; g* P8 i
- var video = document.getElementsByTagName('video')[0];; v) D2 V# k p# K0 U" B
- 5 U" V6 I" ?% \
- var success = function(stream){
8 ]$ v% k4 g1 G6 j) ^, ? - video.src = window.URL.createObjectURL(stream);: l* q* C0 K1 C0 `/ n9 _& ]
- }
8 ^( v: N( h/ V4 \/ C, j. f+ y. L - 9 O! x9 s* J, x8 c' Q
- socket.onopen = function(){
( W+ B* q) ]6 H3 A6 u - draw();
( r' z0 L4 W0 @# A2 r2 Q - }
5 ?& s- h; _! |0 @' ] - 4 H3 h# w) G! r; j+ k$ h5 U) s
- var draw = function(){
; K4 B8 o: b# i: M - try{
* Q7 {" p& w; l: q - backcontext.drawImage(video,0,0, back.width, back.height);; d$ y1 k) c7 j0 l) m- B
- }catch(e){
! c2 w1 ^4 m! } - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
9 t5 u* X9 K. ]/ | - return setTimeout(draw, 100);
$ S+ c" M+ j9 b3 M( d( F - } else {
8 p. U/ v# E* B. g" g - throw e;2 Y8 Y" i) q5 X1 I$ H
- }8 r) y, ~% J$ Z! D# i
- }
' [, e5 c- j% O( X8 P2 Z1 A - if(video.src){
3 K" y9 m8 z1 n4 B* d! n - socket.send(back.toDataURL("image/jpeg", 0.5));
3 u0 W$ E4 p9 s7 k9 B5 R N. Q - }( ~, ^8 j& C" F* j+ ]& \
- setTimeout(draw, 100);/ s. f. Z" v; d$ v: L
- }
/ Q) p0 I# @$ M% t! s. b* S - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || Z5 g6 u) Q( ]3 f8 z
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
9 X' c' n% m! @/ [1 n& l" M. } - navigator.getUserMedia({video:true, audio:false}, success, console.log);
& c% F0 ?- ^0 u3 P! @' Y5 h: L - </script>
复制代码- php i$ ^2 I) f+ D- n7 i. h
^& k6 o/ L' n, V" f- $server = new swoole_websocket_server("0.0.0.0", 9502);
, A! G5 A/ p- C7 [/ ^4 Y
8 m: T) e3 E& U) j6 Z" i, ?- $server->on('open', function (swoole_websocket_server $server, $request) {
' x0 l# S% Y% j+ |4 x - 5 U8 h% }8 o' p2 r# k$ k! k
- echo "新用户id:{$request->fd}加入了\n";
% l+ [+ q$ a* z' g7 E+ q; X - // echo "server: handshake success with fd{$request->fd}\n";
% p9 H8 R* ~7 c6 [- a - });' n; r( o+ Q+ Q4 t* H; O) s( C
$ u" p7 l- b, L( c7 V& w* l# `- $server->on('message', function (swoole_websocket_server $server, $frame) {
& L8 a) ], a2 m
% f4 y: u6 Q5 J2 g6 G3 k- i: d. l7 ~2 F- //循环所有数据" S9 J$ k9 b2 Z) \4 r9 d. c, R, p
- foreach($server->connections as $fd) {% ~3 ]+ K( ~: N# p6 g& A" P
- //返回数据# \$ n: U, a6 I: _! ^ [
- $server->push($fd, $frame->data);
; \* [. Z* N% g }; k/ ^/ k - }% O# A+ F9 _" ~; H5 |
! v6 x6 ]: }/ v7 P1 r# c- });
. |9 S3 Y# \' j Z' [ b, d1 ~* M- d$ v' ]
$ r+ P4 |8 T8 d5 I; E! |9 i9 m- $server->on('close', function ($ser, $fd) {# t, K* y: E7 Z K
- echo "用户id: {$fd} 退出\n";
% ]- t7 w5 F/ ^ @1 N, V' g - });
3 d4 {7 X7 K, _ - 3 [8 U0 q5 _+ ]7 L4 g2 }
- $server->start();
复制代码 ) H6 ^2 y5 c5 ~& u, ]: j$ @+ y
# ~) v" j# T. h! ~2 j. |3 b* R
* I2 P! q+ L4 y, H' D. K$ d% j" s5 q
9 S- d7 Z% r2 S; f% l) E( j$ `
5 ~+ Y. l. p3 h# f6 P8 ^+ F! t) y$ }/ n
- c H# h: w3 M; k2 V1 D( D
2 e7 U# Y) v3 l- ^+ B7 x
# k6 p" e8 _" O' \4 r; R Q0 c0 S8 _
! n; e' w$ f& B9 O0 s1 {! {
|
|