管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket
' ~5 Z0 t/ p8 h5 c8 B3 Y: y0 p上代码 前端 观看页面 - <script type="text/javascript">. I6 J" t5 l a
- var ws = new WebSocket('ws://192.168.0.150:9502');
& L) _: u4 s; @: r/ s - : l* N n! m8 H
- ws.onopen = function() {
3 K4 j& T) E/ ^8 N$ G- ?- q - console.log("连接成功");
3 |2 ` j5 ?: d" x* A: W$ q - };
\+ U; ^- C7 O+ ^ - ws.onmessage = function(e) {
2 G# W: R8 L% W1 B - console.log(e);
# o7 ^* G& _/ M& k1 L - ! V6 B) D& H8 r! A& U
- var data = e.data;+ X; L& C' w3 X ?! k7 D7 Z& j
- document.getElementById('player').src=data;1 F! ~, k' w6 d3 [: b9 O4 A
- };
1 c! w" W' q8 L* Z0 i0 t1 L7 x - ws.onerror = function() {
$ n* U2 H! O; T8 w3 \3 s" _! t - console.log("关闭连接");
- o9 A! S4 Y8 i4 ?( ~ M - };
6 U# Z( N- T1 Y! C6 V - </script>
复制代码录像页面 : u+ |. b, p0 u" c# e4 J/ Z. T
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>! z( u* A6 t: J) F
- V) K6 k# r) y* F3 Z ~/ j) G. V3 R
6 F+ S5 i& h1 b! `6 K: D- 7 w8 G& |" [1 A1 c* |' v8 \& x, h
- <script type="text/javascript" charset="utf-8"> \ ~+ r1 @# G1 x
, i1 L. n: {( _' V- M: Q-
/ t; u3 p# y( r+ r! q - var socket = new WebSocket('ws://192.168.0.150:9502');
/ k. @8 ?1 C! b - //socket.send("嗨我登陆了");. p b2 d4 Y* `5 q0 D; h, H
- " d e# ~* [' B! ~( @- E- j7 t9 n# w k5 V
- var back = document.getElementById('output');
" \( X2 e3 P! s& |( H9 D - var backcontext = back.getContext('2d');; {3 J- S* H. _2 d* {& Z
- var video = document.getElementsByTagName('video')[0];6 h6 i; t' K W$ \
- " x; V* b) j% m
- var success = function(stream){; s# C" V$ u3 G# B
- video.src = window.URL.createObjectURL(stream);3 _5 s; o7 s S: X
- }
% g9 |9 m. E! a& e$ k3 Z/ U" Y. |+ R - 9 H; O; }7 T" I' m. J
- socket.onopen = function(){
4 c0 V: K2 M6 Z$ o - draw();
2 Q+ S$ r3 f0 v& Z - }; j) ~# u; o6 T, X2 M
" s( E. x* T! e( n& ?* X( e! N5 M- var draw = function(){* M- H0 @. {4 N/ N
- try{
8 U; ] i+ m" M - backcontext.drawImage(video,0,0, back.width, back.height);5 F2 p% m! P# K% [8 f8 d1 g
- }catch(e){
6 A7 ]5 |5 g& q - if (e.name == "NS_ERROR_NOT_AVAILABLE") {* Y0 ?* z0 Y- A8 N, Q4 w9 M( B
- return setTimeout(draw, 100);
3 k% Q |0 |) j% j - } else {
9 U" }5 h: w: I0 t5 z. K- L - throw e;8 V5 L7 c! V5 Y# ]% s# z( |
- }
- @2 q1 l# E6 G4 G - }. v4 L. s; _* b* G- H* K
- if(video.src){
; S( E5 g0 [! v g1 }% H/ \ - socket.send(back.toDataURL("image/jpeg", 0.5));
% `$ N6 e$ H" a$ n) g; M - }& O; T6 T8 u' \$ I1 ^
- setTimeout(draw, 100);
, @6 H1 R" {/ X4 i) @ - }1 ~/ |$ C0 z. k( d9 @7 [
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||8 C# K8 N2 }& t e5 S% K
- navigator.mozGetUserMedia || navigator.msGetUserMedia;4 ]4 `8 B0 b8 z8 d- w% _6 k8 n
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
6 Z- Y7 W% C% E4 I { - </script>
复制代码- php. S9 T7 V" X; Q% p% |
; G6 h8 Q4 F4 M! N; q- $server = new swoole_websocket_server("0.0.0.0", 9502);
6 U! k1 X0 B9 x8 w* H s- p+ ]" _3 i
3 `7 j% [( W' V) I- $server->on('open', function (swoole_websocket_server $server, $request) {
. ]+ t# F4 Y/ I7 R3 L# n - 4 R G+ d' G) z1 \0 C
- echo "新用户id:{$request->fd}加入了\n";" h9 M$ J) I( q7 Q& d. I& D% ~/ y
- // echo "server: handshake success with fd{$request->fd}\n";
5 L: O9 ^$ O6 \' O D - });
3 v7 |4 ^/ \( g( a& s1 y - 7 C! z' ^8 {. H$ t& Z, `
- $server->on('message', function (swoole_websocket_server $server, $frame) {+ w4 O, w$ z& ^. }
- 4 D% G1 T! s" o3 @1 }
- //循环所有数据
. W* v |7 x# `. g8 E5 W - foreach($server->connections as $fd) {
4 D% p7 i# `# F - //返回数据! P$ [8 |9 |0 T6 \+ f
- $server->push($fd, $frame->data);) N8 d% ^& @/ H% L
- }3 u) C# {1 g+ f- @# ]2 ]( D" Y
0 D* m7 J' E% d" J- });
8 ^) N# u G, x9 ~) i - , K) V# V. U1 Q0 [* d7 A# l ]
- $server->on('close', function ($ser, $fd) {# [. ^* G) m6 `3 J1 r; Q/ \( {* w
- echo "用户id: {$fd} 退出\n";
8 G7 m+ J6 ~7 }# W. B C - });
: Q0 t" C. V0 k. Q% ~- L$ `
0 Z9 m3 Z6 \+ Y6 Y; ?$ c- $server->start();
复制代码
r# V8 K$ G W/ n3 x6 n, j: W7 }7 @' `6 I4 v8 G
1 z5 v/ J+ I. }8 i; T4 S6 p) A; B! J) H
" \- N, ^* {# E( ~6 ] p
5 [) S$ N& H8 ?$ i4 x* W
3 X% H: |: Z1 u, E9 V4 R, O5 f! b
7 X$ H, }3 g: u: b. o; z' g* O! z8 b: q0 A5 M3 `) V
+ P$ g( D4 S: K+ p; F
7 o% ^4 `0 u: J2 ]" j |
|