管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket2 x2 \) g" X7 w- z2 [# k9 A: \! I
上代码 前端 观看页面 - <script type="text/javascript">
N/ Q, k: v; g - var ws = new WebSocket('ws://192.168.0.150:9502');+ ]" ]$ p9 z4 _6 B) o7 t
! t/ d; [3 f: J. L- ws.onopen = function() {% @% ?% C2 J9 q7 j1 A' i9 m
- console.log("连接成功");
" b [7 x& O: h - };
0 G/ r: v3 H; ~$ c9 ]2 B- Q - ws.onmessage = function(e) {% ?0 |2 V. b1 [7 e
- console.log(e);4 P; h) ~1 U& ?1 W3 [% T8 M
7 \- [5 o& x4 \! }8 r g- var data = e.data;& ]. _7 k! W7 ^1 ?9 t. V. Z# A
- document.getElementById('player').src=data;
1 }0 j* Q- W: c& D4 ^% Z - };1 D U( p# t J' `4 J9 S$ e! l
- ws.onerror = function() {" z4 i. [, I/ P/ J. n8 v
- console.log("关闭连接");! E: [ v2 t/ ?+ ]- c7 G
- };# F1 y8 z L U
- </script>
复制代码录像页面 $ j" p* ]+ X% I
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
5 ^1 d# O7 G$ _0 Q! D - 9 H- D' H/ o4 k; O! E5 m6 N
5 j6 @! a9 \6 e- 2 F& s1 D5 `8 k
- <script type="text/javascript" charset="utf-8">
# p' {% B6 v9 ]1 q0 Y - Q( _4 J7 I& V: {* `( h
- 7 y3 R1 q/ L5 J* F9 [4 N5 g7 O
- var socket = new WebSocket('ws://192.168.0.150:9502');4 y& t2 W- x1 E& j' Q
- //socket.send("嗨我登陆了");/ B0 T- C% Y' v: d6 u: V
! v; h. Y% Z: g- var back = document.getElementById('output');
( _8 Y! \% d* ]( Z1 K% v+ d. H - var backcontext = back.getContext('2d');
: k/ a ~& Z, M; _. O5 q% f8 ~ - var video = document.getElementsByTagName('video')[0];
. g, ^2 p# | g' g7 n) W -
1 c' c6 ? @) J - var success = function(stream){1 Z/ n2 `1 Z0 k4 I# z9 _$ q/ ]! A3 n
- video.src = window.URL.createObjectURL(stream);" q0 k% y. U! Q
- }
' z) G" A* i4 D' E9 g5 F
# h! y2 B) N$ ]3 V" b! O- socket.onopen = function(){
0 n0 C$ D; T$ B3 C, L - draw();1 E2 o. M. ~$ l. w9 |! w
- }$ x+ _6 y# ^8 B( g1 u5 _
- ( r+ R' e4 W R1 |
- var draw = function(){
9 Z/ p: h$ w" m. a, D - try{
3 Q, W0 N$ p v, i; m! a! L$ z" F - backcontext.drawImage(video,0,0, back.width, back.height);
" q+ h/ V) k+ p! i! i - }catch(e){
, ?3 m& l1 ]' _$ [4 F" T" u, `# i - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
0 t$ h! G/ i( _5 ?' h% c0 ~% m - return setTimeout(draw, 100);
1 W ~4 B+ D5 H" l) S - } else {9 z$ b" \: b, }8 U; z6 o% `
- throw e;+ C5 e3 Y* |* o+ M8 l! }5 T
- }" s8 J0 k, _0 s2 z
- }
1 ~5 b' v3 y( K: W$ o' U - if(video.src){
9 G- K* l( @8 d) K0 Y1 T2 Z - socket.send(back.toDataURL("image/jpeg", 0.5));: z- B: Y9 }2 K
- }
3 W* `' \4 f# ^; N( s, \" L6 U - setTimeout(draw, 100);# k9 V# ]0 P+ X _! \% d
- }
. O6 I: i( a2 D2 f0 n - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||2 K8 A X. Z" j4 o7 Z
- navigator.mozGetUserMedia || navigator.msGetUserMedia; \+ ~4 N% {7 M! y
- navigator.getUserMedia({video:true, audio:false}, success, console.log);/ A0 E9 |8 q' ~' Z ?( g2 f7 v
- </script>
复制代码- php6 ^3 [: P! Y, V" D! |( ]5 R
7 g+ { Y0 f9 t' S+ A: l- $server = new swoole_websocket_server("0.0.0.0", 9502);
+ O. P# ~7 L) | E2 S) D
* Y. ^1 m: d6 j0 D3 N; e- $server->on('open', function (swoole_websocket_server $server, $request) {3 i& {* \$ | _5 Q: Q: f
. ?7 S& Q- g8 a+ \9 m0 J8 z+ D- echo "新用户id:{$request->fd}加入了\n";* P1 j: U/ j( X" g. m& {5 J
- // echo "server: handshake success with fd{$request->fd}\n";% z. c! \+ k0 f6 S
- });
7 n4 Y7 o7 q1 M5 w/ b
4 G- Z& F- c+ M9 D- $server->on('message', function (swoole_websocket_server $server, $frame) {
: }: u4 a8 F$ t* B - % M1 h( C( A; e X: k, b
- //循环所有数据: V. D" U% N4 T/ i' ~. s, Z8 Y# g
- foreach($server->connections as $fd) {1 D+ [" G8 F/ M$ j u' d% D! I; T
- //返回数据
' I- b& F0 C5 s - $server->push($fd, $frame->data);
% f9 H6 e' N, f( }, U7 Q0 I( k - }
- u* G7 u1 t' q4 h+ b( f1 A
5 W! F6 {" g" N4 P+ ]; G7 ?- });
. ~5 R# x1 N' }* W2 W* u ^5 e, T - 3 {- R9 a' O- Q1 b
- $server->on('close', function ($ser, $fd) {
* d( U. B3 h8 R8 Z& ? - echo "用户id: {$fd} 退出\n";
/ |: `# P8 b3 c, t! O - });
; r$ C; k! m5 P) `# [( |: L
6 h9 f* m4 o' ^ L) D- $server->start();
复制代码
4 L. M9 h, Z f0 V- i$ d' O% e! x3 }, F" @" ?9 r
6 E* C2 \* @6 q9 J2 _
& ~3 I0 T/ t4 A" p! ?* v0 h' o: ]$ L& o
* t" `; C4 o: a( }6 D: S* X9 o
2 s& A3 K0 e- I) `! }! }9 K0 X
$ l5 D. i; U* K# z4 i$ j# p( @
& A3 s6 x, B6 a4 f2 G/ ?8 y+ u" v
# O' E8 ?" K' G: @3 ]+ `' @: T$ s8 q5 q2 ]! h6 e" j
- Z# W$ m! }4 O. F5 O' s+ W S |
|