管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
" J3 w" n3 ^" f6 e( s7 S6 d上代码 前端 观看页面 - <script type="text/javascript">
: C% j! c2 r. m( v/ a# |$ p - var ws = new WebSocket('ws://192.168.0.150:9502');
5 k$ R/ o: h1 l, V9 i - - o6 W( v8 k5 R- ~. b1 W6 r n+ O
- ws.onopen = function() {
. i: X. M5 k! X5 [3 [ - console.log("连接成功");
# Z: B. T9 ~. l; S - };; ]4 I9 T: A3 v- Z
- ws.onmessage = function(e) {: X; s; C- P8 T& \
- console.log(e);& m/ l: T2 u+ ^
- . I- f: w6 j8 `' y6 W
- var data = e.data;
1 |* t' q) E' Q9 ~+ g - document.getElementById('player').src=data;/ C) P2 _) k# M7 T
- };
( L. ?) C% b1 C, D# p - ws.onerror = function() {7 U5 M7 t! p* m
- console.log("关闭连接");
! \5 c/ v) @7 r# `) T% l - };
( T* I7 [6 B$ }1 e - </script>
复制代码录像页面 + n9 h7 M8 t6 |
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
& U# U' X3 {1 K$ d6 k D v
* }3 \ F6 T: r# ~/ f- & `& D7 @; Q' T7 f4 r8 k
- " d( k( s5 [- u; j. Y; {
- <script type="text/javascript" charset="utf-8">( o L: O7 z W7 v; L! J7 d7 g
- . V9 C0 X7 T$ d; S! }! ?3 G
- ! J {% B8 v: W) `
- var socket = new WebSocket('ws://192.168.0.150:9502');
8 i: q7 m3 l) {0 ?6 J - //socket.send("嗨我登陆了");
. l+ b7 v# i# C1 @3 B7 v7 b - + ]3 {( c8 S: ?. Q6 t
- var back = document.getElementById('output');; N! I$ ~! E6 H7 h% m
- var backcontext = back.getContext('2d');- F& |6 g" ?, _* S9 i% w* D
- var video = document.getElementsByTagName('video')[0];
, Z) d7 H X! W! p. k3 V( A4 b - ) T) ]4 m- l: E! O$ o) t1 }
- var success = function(stream){ X M ^7 I: @+ ?
- video.src = window.URL.createObjectURL(stream);0 t- t; `4 S; r: ^
- }# g7 r+ x. f0 u# h5 Y* w2 X, d/ c2 J
- 9 k$ A, W; O. V' x4 _
- socket.onopen = function(){. x3 g5 A$ ]; F2 W5 I) h2 ]5 |
- draw();
+ n0 [2 m, G( X: {# S& Q - }6 f2 V3 v. Y8 E$ G2 V$ b
) J/ k% J( i2 n1 {- var draw = function(){3 S6 w+ i* S% \
- try{
, q2 E- }! x6 _ - backcontext.drawImage(video,0,0, back.width, back.height);' ?9 Y3 Z. f& r$ F; N
- }catch(e){
# b+ a& m' U/ V J0 y - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
2 `% _* E+ i1 M2 h9 H2 x - return setTimeout(draw, 100);
) N# ~. j* g6 E% h - } else {$ T& y7 Q5 x% Z, V; }& I
- throw e;5 ~! l) C# m. v/ L0 b
- }9 n" p# d; C! g5 C+ h" \4 `+ i
- }
0 L4 H) t& p O6 h - if(video.src){1 ]) {" ]" Z$ y5 [. F
- socket.send(back.toDataURL("image/jpeg", 0.5));: P1 q" O2 b. t7 i7 O6 r: B: Q) {# ~
- }) J' Q1 j# q( S9 T
- setTimeout(draw, 100);
) V) K5 r& P% a' ^% C- o& a - }) V6 ^. x* X6 ~7 D' W
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||( t) K/ j* D& D1 E6 M& w; O6 ?
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
1 O# R, | z$ P" I# `1 o3 S - navigator.getUserMedia({video:true, audio:false}, success, console.log);2 X: a2 N( b1 c
- </script>
复制代码- php
/ B; Z# V+ [& y; M+ A
: k' z$ }& J& M- V- $server = new swoole_websocket_server("0.0.0.0", 9502);
4 e" I$ \" E8 b! H* d; D% G. g - ! W5 I- i) Q2 L
- $server->on('open', function (swoole_websocket_server $server, $request) { E5 o. B) { [
- 1 @1 Z- l9 s5 P: f
- echo "新用户id:{$request->fd}加入了\n";8 k9 r$ ^. b6 w9 l) w
- // echo "server: handshake success with fd{$request->fd}\n";0 O7 l3 R0 s( h. t1 G# C" P" P( t3 Q
- });
3 G' G1 u# P& x" ~! d0 ]
2 b! `: m6 D, }( @0 P+ P8 c- $server->on('message', function (swoole_websocket_server $server, $frame) { d5 B r: _- G# D; X5 P
- . W6 [! I6 X2 o7 p5 E k
- //循环所有数据
# K7 N; B+ R0 i; Q, z - foreach($server->connections as $fd) {6 X# p$ {7 a! P* o& j, L
- //返回数据
. \' b4 T# ~& ^) l - $server->push($fd, $frame->data);
( W8 j0 N- M# j, g$ `7 k - }
5 ^. s4 t; O& H* H- w, B0 j
5 |9 @1 G6 R. ^4 o' i- });
! r- `* E% V! n4 ]/ z ^) Z, h
( c: f$ Q: d% g# q- h- $server->on('close', function ($ser, $fd) {; M5 S" ^: f& }, o$ k5 c+ I9 Q: p
- echo "用户id: {$fd} 退出\n";
" \5 C" A2 U5 r" M- T4 L7 E - });, V0 \+ ~/ F( f8 g) q
4 Y) v; x V8 Z3 |- $server->start();
复制代码
2 ]1 v9 t* l# W! ]
) X8 s1 |1 f% v! f6 E% y1 _/ X8 F
$ Q5 R+ t0 b$ U6 f+ P `" i6 v5 ]2 i
- S& {3 r/ _: r8 M
7 f- F+ \8 w, l' ^
" u }6 {3 w% F; O; R
" ~# Y/ E. f+ I" y& T: g4 J" w3 c6 h& O+ M6 t, Z
- Q) Z. ?; S5 g& P: H- O0 M w/ t; B, c. ~! T6 Z
1 Z% E0 t, U. D+ V# o( R l6 ?
|
|