管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
* |: o, G+ H- `6 @上代码 前端 观看页面 - <script type="text/javascript">
; u6 G+ t. ]4 o7 Q0 E% v3 V - var ws = new WebSocket('ws://192.168.0.150:9502');4 j0 F* `3 H: v O% G0 X7 f
- " i" a( U3 x' q7 D0 I o4 X5 g
- ws.onopen = function() {
3 C5 }7 `9 _6 o. K% ]. h$ u - console.log("连接成功");0 a- e0 g) a3 E% q' B8 Z$ ]# Z$ ^
- };
- E! n, m7 z/ O& \8 F& D& T - ws.onmessage = function(e) {
- d+ i6 q! N9 j - console.log(e);( |( M3 G+ Y% [3 Z; L" |) G9 y
9 T' `. h2 {6 L* J$ L7 g" N- var data = e.data;
1 R* o( L( ]) K# E/ |. q1 w - document.getElementById('player').src=data;
9 W5 I! _5 h% | - };
+ H" }) |$ n( j( h5 M" f2 \' J. j - ws.onerror = function() {
+ Z* J4 z0 [% e, K q - console.log("关闭连接");( n+ u( d; m" R, I
- };
: E7 ^3 j. |* r( U" L, K0 p - </script>
复制代码录像页面 ' \! J* u5 y. O3 B, L: A" b
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
! z- e M: J$ E9 l
; U: a/ O( j! O7 X4 V" D- . v5 ^3 G: A. g* ^1 t" Y
- ' x! U' v3 h5 U& W
- <script type="text/javascript" charset="utf-8">
1 u) J% i: D: b
: h" U& Z: E& f! ?& |-
# R' u. }* e( I- Z2 d: F - var socket = new WebSocket('ws://192.168.0.150:9502');( q5 C- {# J! t2 ~9 R5 [2 K1 P7 o, N% V1 U
- //socket.send("嗨我登陆了");7 _$ V4 z$ E0 m3 I- Q8 S- v
9 Z8 W( Y: C% E# f$ K' J- var back = document.getElementById('output');" ?# @7 ?/ t+ x2 v4 ?% X4 C# D
- var backcontext = back.getContext('2d');
9 T: _5 J* c. T" _8 B - var video = document.getElementsByTagName('video')[0];' R9 o, D9 V/ F- U6 z: Y- _: U( Q- I' t
-
. t5 p8 p: J. d9 }% z* `3 B - var success = function(stream){$ O8 \1 P* F" T$ N8 {
- video.src = window.URL.createObjectURL(stream);/ h( F* S3 I* E" M/ i( `
- }, o2 n7 u$ d9 x- R% ~
- ) `) d ?$ a* F
- socket.onopen = function(){- M: O% O2 F+ I/ E. |
- draw();/ n W* u& E3 s& T8 o- P5 U7 W
- }9 F C/ E+ V$ }+ F
- / {3 t0 D1 Q5 z5 c4 [9 y0 R$ P- j0 u
- var draw = function(){
& K, m* x% g. |: G0 {( v - try{
* e# F& n' d% _ - backcontext.drawImage(video,0,0, back.width, back.height);
9 S. o/ m* k/ V - }catch(e){
6 J I4 U* |- K2 d7 I - if (e.name == "NS_ERROR_NOT_AVAILABLE") {+ x [' h0 L C+ B2 J( Q+ {
- return setTimeout(draw, 100);1 A( G" |) Y( [ U% g3 @! s
- } else {
0 B4 S+ K- a+ w: |) j1 ^ - throw e;! z+ {1 t7 Z$ n4 r* G2 s+ s; l
- }7 J9 Y4 g) S; I _
- }
( J3 R3 Q. ^$ ~ - if(video.src){
5 H4 b$ p& k* l | ?. X, [ - socket.send(back.toDataURL("image/jpeg", 0.5));
3 ~6 A4 Z+ X1 ]9 W! m. B5 S - }8 e$ v5 Z0 Q7 @! m. V4 X
- setTimeout(draw, 100);
* E' b0 q/ i' \# O& d" M' }. h7 H2 a# ] - }# D, q6 N$ k" M
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
# w+ ` d5 m' S* C& v - navigator.mozGetUserMedia || navigator.msGetUserMedia;
% M7 f0 N& e8 U - navigator.getUserMedia({video:true, audio:false}, success, console.log);! m# P/ I8 ^% O% x+ ~8 V- ~' S
- </script>
复制代码- php
* v3 E+ [: L0 o: @ - , T+ n* Z/ [4 @7 k; U4 W
- $server = new swoole_websocket_server("0.0.0.0", 9502);
6 G% k& z( a5 R - # g7 p7 p e/ C
- $server->on('open', function (swoole_websocket_server $server, $request) {
. U; q4 J. K: L+ g% j
- {8 F8 C/ z7 I7 G% I& ]2 `8 R- echo "新用户id:{$request->fd}加入了\n";+ Q1 n& u, B, z5 ^2 ~
- // echo "server: handshake success with fd{$request->fd}\n";2 T6 ]' m4 h c# L' B
- });; C( q6 J8 X7 [2 a0 U, g4 ]# a
4 {4 z+ j0 \9 |" H7 ?- $server->on('message', function (swoole_websocket_server $server, $frame) {
0 v6 h3 ~8 u7 _/ B9 N+ G0 x
5 M1 {1 Q/ X9 V7 {- //循环所有数据
* F" D7 H" ~4 a- I+ M$ a - foreach($server->connections as $fd) {; ~" z3 M6 W5 n6 j) ~4 a/ R
- //返回数据
3 ?5 K* y/ `2 I7 m) x - $server->push($fd, $frame->data);
7 j; E6 R$ G* } - }/ Y. q: Y6 m) y6 K) j' ?
- " z0 O) R- _, D! ]4 ?: B. X! p
- });9 U) I$ \2 ~* O) |5 b8 ^" t
: q5 m2 t& _' V3 l: W- $server->on('close', function ($ser, $fd) {
9 i: @: s. f4 u( Y7 ~ - echo "用户id: {$fd} 退出\n";; i; y/ x. L7 o# `8 M" _) }0 A
- });# }4 s; ?7 m% ]4 _
% |2 ^' n! X/ H9 ?( d! j- $server->start();
复制代码
9 a; }1 F1 I$ h Q, C# K/ m8 M& }; ^
0 N# Y$ D6 r* g5 ?# S( ^
4 ]% z& q9 a/ w; [' _) P+ b' j
( x+ a. X k+ y) ?2 _
: E: {3 f% a8 b
2 i/ f* C6 t- H5 G8 ~
# u/ g) N& n8 y* [7 ^( i# j4 ?8 S
8 \" n1 j' B$ i
# j8 W8 Q2 u1 x
9 x6 U9 z5 p1 c
1 j$ v! _3 k+ Q; G |
|