管理员
![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif)
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket% J% T# p6 q2 k$ D% N; r
上代码 前端 观看页面 - <script type="text/javascript">
1 @) I, Y* X9 \ - var ws = new WebSocket('ws://192.168.0.150:9502');
! ?# E# a2 h( u' R+ n
$ s' ~. T# B6 M g) t- ws.onopen = function() {
% z- q# R# S& [# ~$ h# ` - console.log("连接成功");- u8 ] P/ h' W5 H0 c
- };3 v9 t. V$ L. o) b' B
- ws.onmessage = function(e) {2 ?/ G. d5 e( Y9 ~# H8 A
- console.log(e);
; ~# w2 x1 Q; L9 i' Q0 [ - . t& @& _5 g% B: y: F
- var data = e.data;
0 C; Q/ ~6 F. B6 ?# H, j) P - document.getElementById('player').src=data;) ~* x2 X l) X" t" k* |7 V7 H
- };
0 t# j9 ]7 q3 M+ b - ws.onerror = function() {4 r0 U# H- `: w) R6 P2 d6 d
- console.log("关闭连接");
* W6 W! _) e f - };, y; ^; h8 ~2 _6 C: t
- </script>
复制代码录像页面 % z! S- m( B0 S* q, n4 t' X. [
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
+ }; f. M& O2 p ]0 a& e- h
7 |0 u$ W0 u, t/ ~( R. B
8 ^* t+ y( ]( M8 r9 J- 1 Q1 K) I' h$ [4 D
- <script type="text/javascript" charset="utf-8">/ K+ D; v. Z+ Q, a% S
- ( a6 B9 k1 T" s6 _
- 1 \% c+ H7 O$ N' |/ h+ M
- var socket = new WebSocket('ws://192.168.0.150:9502');
$ I" U; C# Z% ^8 x% W - //socket.send("嗨我登陆了");; i& H( B1 M; V1 d, \9 g
1 M2 @2 P' P% p6 o- var back = document.getElementById('output');- i" U, l1 U1 d# C
- var backcontext = back.getContext('2d');
. o$ H9 i1 \2 j: h5 K - var video = document.getElementsByTagName('video')[0];
: Y+ d" J6 G9 M; g5 U& r - % a, J7 j1 }1 Q. S
- var success = function(stream){
* H: `! b" b! y3 r9 M& D j _ - video.src = window.URL.createObjectURL(stream);. [9 B# `& Y; ?
- }
& ^9 b! a0 A; e# A7 h2 K - 5 h N5 t2 X$ Q$ n/ d
- socket.onopen = function(){
7 E. y4 o+ s2 O x2 H$ @3 a9 d x - draw();; H) [+ T4 R i
- }
4 L; V1 P* w) t! S8 X - - }# M @8 B9 ?! n R. \
- var draw = function(){
) U( V+ J# z* x4 `8 r' X9 E I - try{+ f: ]9 a5 S1 {( o1 z$ r0 a
- backcontext.drawImage(video,0,0, back.width, back.height);7 J+ W) O8 I% } `/ S
- }catch(e){
V' @0 L# r; M) ?4 t$ Z& E& } - if (e.name == "NS_ERROR_NOT_AVAILABLE") {" S1 T) v! O5 Q3 h: N. R
- return setTimeout(draw, 100);
% @; b. k/ }5 r - } else {
" ?. o8 L; G5 X0 _9 R - throw e;% G5 M3 [$ H( B5 E1 A- S8 q
- }3 r/ n6 t, }1 {0 `, {
- }
) I4 m& U' C" z9 P$ E- N* w# | - if(video.src){2 c/ V5 F6 u' Q& g% @3 a& E
- socket.send(back.toDataURL("image/jpeg", 0.5));; b# V0 H$ }! z0 j4 n( @' F
- }% Y% a8 h, D" w+ M( I; f3 C
- setTimeout(draw, 100);
! Y: u4 v! ^7 ]% O6 [# g - }" ]% {0 @8 W" }
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||& p3 i: d0 r1 S+ Y
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
+ W" e: F# b# Y - navigator.getUserMedia({video:true, audio:false}, success, console.log);1 k3 |; H* S7 |+ H+ `" ~0 x8 ?
- </script>
复制代码- php d8 [0 K" k; @" n
- 5 _3 \! l9 `. Y8 Y
- $server = new swoole_websocket_server("0.0.0.0", 9502);& A% H' e# b9 P+ d1 C! z7 w2 }
6 P7 e% s. y6 e/ O% ^- Z- $server->on('open', function (swoole_websocket_server $server, $request) {- s" Y% } o" T) Q
4 a: \* r6 @& e* ^1 k0 c$ S- echo "新用户id:{$request->fd}加入了\n";( ?, _ L5 {; g, O5 n: _9 O
- // echo "server: handshake success with fd{$request->fd}\n";1 [2 E* \2 I7 {8 v/ ~* |
- });
}7 ~; L; B/ T0 l3 w- I
- A1 I7 v9 I c* {- w- C, @$ l' J- $server->on('message', function (swoole_websocket_server $server, $frame) {
y) e$ ]' ~8 R% {9 b6 A; p
. m$ T) e7 Q# t8 r- //循环所有数据 W4 x# X$ Z7 b1 S
- foreach($server->connections as $fd) {
! |3 J2 a/ K: @6 g - //返回数据
. Z$ a& H+ ^! ^: u4 A- S% Q6 n2 f - $server->push($fd, $frame->data);
/ v. U+ L" [/ u/ I& p3 M& ]0 X - }/ ?; d8 h: P& I5 @; n
- 2 {2 y4 P2 p* q
- });4 e h5 I$ J2 ~9 j
- 0 C) x6 ]! g1 N
- $server->on('close', function ($ser, $fd) {
, n1 h5 M% n& G% r+ m4 p7 G$ c - echo "用户id: {$fd} 退出\n";
3 G3 t* u0 Q8 O - });
+ ^ r3 ~/ W6 n - 6 S# A( Q% g4 f9 O6 e. I7 [- {& j1 Z
- $server->start();
复制代码 8 U+ Q1 ^2 B4 X$ H/ \
3 m+ ~/ f# E3 J/ |
8 C1 r- q9 E6 U4 K. h
7 Q f1 Y+ L- K5 r6 |3 p
$ q" f+ v: a& q+ A6 T- [
4 [7 n3 o( |" [# A
; O2 L8 V' ?) I! E
2 w7 N# u# |; a0 n9 e$ _. t: Y3 F! X
+ c' B& E' x% _0 H; V6 D2 }
% f* N' m1 D4 ?! B3 U
7 r% x; w0 j! K- b$ u& Z: D |
|