管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket8 H9 R+ d& e$ ]/ L
上代码 前端 观看页面 - <script type="text/javascript">/ Z3 H7 K: P; Y* C! F5 @% E
- var ws = new WebSocket('ws://192.168.0.150:9502');
' `; I4 D# E- D) U9 u" U3 W
5 R% ]# p* I A$ j# x# h/ _ W% v$ t- ws.onopen = function() {! S6 j+ ~6 h1 _% K! l* w
- console.log("连接成功");1 K" [7 i/ ]/ G1 |* Z1 F
- };
% S: G1 h, i/ Z3 B! E9 } J4 W - ws.onmessage = function(e) {
% S* v! b0 |6 O5 `; e' E! e9 Q - console.log(e);
" U, J( f1 R6 A% n+ ~' ~+ m - & u. j& S/ S+ R0 p; D7 ]' h
- var data = e.data;) W& v9 h% F4 c
- document.getElementById('player').src=data;3 z! I2 _/ X- H- r
- };
3 R# y4 F0 R+ Z3 Y O - ws.onerror = function() {
' U- o# N, b r* m i - console.log("关闭连接");
. P$ M$ O) E# N3 f' F4 N - };
6 G7 F( X- Z! r: h- Y - </script>
复制代码录像页面 $ O" ?9 v/ z& l8 p3 L+ c P( v ~
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
* F( g' J2 X7 N4 R - ' g" h( C9 f) l% v+ Z, o
9 |8 X( a8 ?- l8 H- + J2 O2 U% k0 W) Q, Z
- <script type="text/javascript" charset="utf-8">! o0 a3 T2 j7 _
* D; k/ r3 S" x) x-
7 U- e/ [, O3 \) b; C2 s- Z - var socket = new WebSocket('ws://192.168.0.150:9502');- Z( u* @( c6 }' m. Q( R
- //socket.send("嗨我登陆了");
6 T$ C# c5 M' H9 o2 T7 H - 4 Y8 m" }* X3 F2 N
- var back = document.getElementById('output');
6 ?% ^2 {+ n% B" P: ? - var backcontext = back.getContext('2d');
0 X; W# }8 O6 K5 V% _: n - var video = document.getElementsByTagName('video')[0];) z$ ~" }, B0 O1 B8 D `* ]
-
/ c3 T0 \' k2 _- Y - var success = function(stream){. `) D$ K0 F; K' y( T* v
- video.src = window.URL.createObjectURL(stream);$ F" D9 G, s) O3 P$ X
- }
' T! x1 x4 A/ t" D& p0 ]
+ ^7 s( |4 A( v8 f2 X- socket.onopen = function(){
, ]4 k* }5 K6 v& h. A+ ^, a - draw();( m/ W- [9 [7 C+ s
- }
% Y2 D, z: @/ F% [
5 X: y, \# k# e9 Y# Q+ x. Z. |7 [- var draw = function(){" P) d. I* @2 s; R8 O- A
- try{
' y% m/ \7 n" \ - backcontext.drawImage(video,0,0, back.width, back.height);
9 i4 t9 d" n4 {) d9 C/ K - }catch(e){; g+ k* ]# N) k0 L }: t v
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
: `/ X( ^& p2 `4 h; o& z - return setTimeout(draw, 100);; c' ~# }4 u8 Z q! B- J3 j3 q
- } else {* K1 `9 U' \/ g; C/ n
- throw e;
2 a3 |8 H/ H1 V$ O$ q' Z, U' b - }
$ r4 @6 a; Z/ E4 \; C; S1 ~; y - }$ ]5 L/ X1 K) A& n$ T
- if(video.src){" W9 I2 I4 K+ m6 m: K3 U, S; r: T
- socket.send(back.toDataURL("image/jpeg", 0.5));& A3 U+ R1 h6 s
- }5 l1 J3 W! }5 m
- setTimeout(draw, 100);
5 F; [) ^+ @% X) M: O9 ~ - }% i* c, X2 X# y2 C% v% G' q
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
' y n( e w3 b. S4 D, B$ y% { - navigator.mozGetUserMedia || navigator.msGetUserMedia;
" @" f7 g B. P4 c" \. z - navigator.getUserMedia({video:true, audio:false}, success, console.log);5 g1 F1 b' t) S5 [: r$ `
- </script>
复制代码- php
7 Z/ A: ^& k* S# `+ |9 B - 6 Q6 L% Q* E8 H
- $server = new swoole_websocket_server("0.0.0.0", 9502);
! B& I, W; U" v! B: d% _
8 m9 z+ o4 P2 ?2 q- $server->on('open', function (swoole_websocket_server $server, $request) {! V/ h# u. z1 [
- 4 f& ~: V1 i$ E: v& N; |9 X
- echo "新用户id:{$request->fd}加入了\n";( C& W) s# e1 |
- // echo "server: handshake success with fd{$request->fd}\n";' x7 m, o5 w: K: E6 t7 S. Z) Y$ Z
- });
! z6 s( T/ c G' ?! z3 t7 o - & ]: T( Y9 r+ x' Q$ ]- P" q
- $server->on('message', function (swoole_websocket_server $server, $frame) {
9 j+ b* m8 I6 g) D - ! A9 L& S2 r. |
- //循环所有数据
# H9 s: [2 c1 _ j7 u# j - foreach($server->connections as $fd) {' ~; h, I- o! w0 S
- //返回数据& E- x/ b, N! S! z: _
- $server->push($fd, $frame->data);( W: k0 m% |1 N$ E* {
- }' S" M; U' e: H- h
; {! y V# x( }0 b8 s' o) d2 Q- });
/ ?, u6 ~ f/ E7 c
( }6 M k9 u* `7 ^, E$ ^- $server->on('close', function ($ser, $fd) {
6 s. X% o5 X% B# M0 E/ l$ s - echo "用户id: {$fd} 退出\n";0 \2 s3 M3 m* @) ?
- });
9 d& l# q! E7 `# z+ m' h# P% Q - F* j9 K0 |) K" a9 }
- $server->start();
复制代码 5 ^9 P* N, S# f8 Y* A; J/ D% m
; M+ D- B! L1 g6 ?5 P
! D0 E2 I6 g, B; ]% K/ M5 E- |9 n! x: M- `5 r
: V- G' _# {! e
9 ^, e- ~7 l( ^* A- s/ R0 N0 L1 N
3 G" H, P8 O5 l# C; r+ n
2 a0 c8 s4 K4 [' N7 n3 d; w
) B/ G5 j5 Y; ^, \. W
; T C3 K: e7 V% d, I# W
3 N7 ~: o% E5 ?8 ` B J/ U3 |; N
$ C) C( F; [$ c0 Y2 H
|
|