管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket1 [6 a& c* |# h0 U0 l% Q
上代码 前端 观看页面 - <script type="text/javascript">
4 o9 H- ^7 b1 @, A4 Q/ } - var ws = new WebSocket('ws://192.168.0.150:9502');& W! ?% c$ J5 R
. j! |2 p A& C) l$ m- ws.onopen = function() {6 z0 g7 f' H) M
- console.log("连接成功");
7 D5 p2 v8 K' p- j1 p9 g - };
8 e3 S* Y$ C% m4 ?' ~' q- Z - ws.onmessage = function(e) {5 b4 ~# I. u3 ?" S8 i) `- l
- console.log(e);
" B; e* X% ?- _& H/ M2 J' Q
1 x% t: S( J3 s; X5 n6 E* U5 P- var data = e.data;
. f1 ~+ s+ P" [" g: A8 X2 k9 b - document.getElementById('player').src=data;
* d6 M/ g' g/ \ - };7 h# b5 v5 O. a2 Y9 ^4 S6 B l& u
- ws.onerror = function() {
* v' j, X4 d: h2 L0 O8 X - console.log("关闭连接");* ~1 b: G H# x5 I( Z
- };! o. w: k7 o7 f' [4 N8 ~( t
- </script>
复制代码录像页面
8 M& Z# D6 l, Q2 `. x$ X- }最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>- a% j& ^5 b' a( d) w4 f
2 p' S( b0 T( P' T8 b
. C; l5 Q. Z# H* D7 x7 F3 M
! W- T; z8 p! X/ d6 P- <script type="text/javascript" charset="utf-8">$ e$ m2 `. V$ i! g6 K) O& \
- 8 h8 v+ J4 n" p2 @
-
+ p, {0 h2 v( f* e% K" \3 Q - var socket = new WebSocket('ws://192.168.0.150:9502');, l% ]( y; ^; R/ B2 H
- //socket.send("嗨我登陆了");0 n7 Y3 S. |! ^) G/ d
2 E5 m; e, s2 F8 H8 t- var back = document.getElementById('output');' T$ R/ _. @3 @$ A' [. D1 x
- var backcontext = back.getContext('2d');3 T9 H: C1 C! L. Z ~$ l
- var video = document.getElementsByTagName('video')[0];
- f1 T. X- A2 [9 T/ E - 3 \9 r0 G1 z v) A
- var success = function(stream){
9 C" M' r# O6 A5 P - video.src = window.URL.createObjectURL(stream);
. @' \4 B; a+ q4 W% ]7 k% B - }& N3 I2 e( x, r j f
4 W+ x- p" d) C4 R- socket.onopen = function(){
0 X; a p1 `, f6 S( C X8 c/ c - draw();: c9 y$ ?* m: ^' \
- }) s. p# ] h8 k$ O3 f5 R
- . o; [ Q8 \* a2 k# W
- var draw = function(){
5 d, }# B* \- [0 f* o - try{
1 c( l7 |( |- v1 U) d1 t+ ?. G) n - backcontext.drawImage(video,0,0, back.width, back.height);
9 }9 `* e$ c1 Y8 X, z - }catch(e){
, `+ K/ \8 ^7 F0 ]3 P - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
( I( Y9 o1 x' i+ S1 A$ j) B( X. ~ - return setTimeout(draw, 100); [3 v4 x. `. i$ a! P
- } else {
6 C4 a3 y# a8 R# |5 W3 R1 m - throw e;$ b2 Z1 q: ?2 k/ I& l
- }
* @0 g! h1 L3 H3 z, _& y( ` - }
) o; y5 {) H0 p9 i3 T1 a3 K - if(video.src){$ Z/ |3 w" N7 z z
- socket.send(back.toDataURL("image/jpeg", 0.5));6 F" a% p4 U4 ?3 S: D
- }
' A4 `% n% a% B0 T: _+ V5 d% Y5 v - setTimeout(draw, 100);" }: b8 G `$ m/ a
- }
0 ?; x6 O2 U" x6 J2 y - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||+ Q6 X- V" y/ b: |8 F; d
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
" g; `+ C2 ?$ h2 Z$ f: { - navigator.getUserMedia({video:true, audio:false}, success, console.log);: w- X/ w% r( ^& U% l, L' M% r
- </script>
复制代码- php
. T8 J; E2 b. j- m/ V p v
; w3 ~6 t8 }% W- $server = new swoole_websocket_server("0.0.0.0", 9502);) e0 }7 P4 N5 X+ T" q# A# y7 n
- * |% x: Y# Z3 g1 ]7 n1 G
- $server->on('open', function (swoole_websocket_server $server, $request) {
5 r( a/ f& D$ y' c, @
, I2 {( d' A* R. r; y5 P- echo "新用户id:{$request->fd}加入了\n";
) J; ~: \3 _4 \, B7 q - // echo "server: handshake success with fd{$request->fd}\n";
" b: a" X% J/ P( C4 h7 X( g& a - });
) i. q: J) |6 p2 Z, ~% Q) o& F1 B7 f
, O( h9 N: [( o, y2 L- $server->on('message', function (swoole_websocket_server $server, $frame) {
. ~3 P, }0 E4 ~/ l0 Y$ G
7 |* [: i8 ?+ b" Q- //循环所有数据2 [, t9 E5 J/ ^; K; s) L* }
- foreach($server->connections as $fd) {/ ~& P) W( c8 o
- //返回数据3 u" ?; V$ ?( X/ m
- $server->push($fd, $frame->data);# {7 y3 m- o0 i# w5 F$ b
- }4 r g3 ]4 X2 a2 _7 j
- 9 j$ p% f b7 L6 y, t1 @7 d
- });$ m5 w1 H/ h& v" g% Q1 Q
, S! O0 ~' s% {4 q. w0 {- $server->on('close', function ($ser, $fd) {, N( T7 B- i7 Y* `! Q
- echo "用户id: {$fd} 退出\n";9 Z: b+ d* S6 L0 F
- });
# R! {! ~& ]& t* p h) I* U - 4 ?) Q# z- v/ z- F# o$ L8 X9 }; L
- $server->start();
复制代码
& _! ?4 n7 |5 ^! a: Q' M
" P( u& n, D! |( m% \; u1 x
& H& R* c2 [# y4 g3 } o T) U6 |6 _% A! `3 t
2 w) C+ i4 ]0 |" x
( h0 t5 @% B3 P$ S8 c
6 W: V$ ?8 g; T7 f1 z1 H6 W5 h1 f& Y- b `
, |% N: T2 E& x) | z3 ]2 ^' @! m2 y$ d0 x1 M2 \$ a3 |# R5 n
, h3 Y4 u8 c" U$ K6 h
: S9 E* Q! }3 \3 O- e3 }: p |
|