1
1
import FriendCanvas from '@/components/Share/FriendCanvas' ;
2
2
import MyCanvas from '@/components/Share/MyCanvas' ;
3
3
import React , { useEffect , useRef , useState } from 'react' ;
4
+ import { OpenVidu } from 'openvidu-browser' ;
5
+ import axios from 'axios' ;
4
6
5
7
const APPLICATION_SERVER_URL =
6
- process . env . NODE_ENV === 'dev '
7
- ? 'http://localhost:5000'
8
+ process . env . NODE_ENV === 'development '
9
+ ? 'http://localhost:5000/ '
8
10
: 'https://demos.openvidu.io/' ;
9
11
10
12
export default function Share ( ) {
@@ -16,20 +18,19 @@ export default function Share() {
16
18
const [ mainStreamManager , setMainStreamManager ] = useState ( undefined ) ;
17
19
const [ publisher , setPublisher ] = useState ( undefined ) ;
18
20
const [ subscribers , setSubscribers ] = useState ( [ ] ) ;
19
- const [ currentVideoDevice , setCurrentVideoDevice ] = useState ( undefined ) ;
20
21
21
22
const OV = useRef ( null ) ;
22
23
23
24
useEffect ( ( ) => {
24
25
window . addEventListener ( 'beforeunload' , leaveSession ) ;
26
+ joinSession ( { preventDefault : ( ) => { } } ) ;
25
27
return ( ) => {
26
28
window . removeEventListener ( 'beforeunload' , leaveSession ) ;
27
29
} ;
28
30
} , [ ] ) ;
29
31
30
32
const handleChangeSessionId = ( e ) => setMySessionId ( e . target . value ) ;
31
33
const handleChangeUserName = ( e ) => setMyUserName ( e . target . value ) ;
32
- const handleMainVideoStream = ( stream ) => setMainStreamManager ( stream ) ;
33
34
34
35
const deleteSubscriber = ( streamManager ) => {
35
36
setSubscribers ( ( prev ) => prev . filter ( ( sub ) => sub !== streamManager ) ) ;
@@ -58,28 +59,14 @@ export default function Share() {
58
59
await newSession . connect ( token , { clientData : myUserName } ) ;
59
60
60
61
const newPublisher = await OV . current . initPublisherAsync ( undefined , {
61
- audioSource : undefined ,
62
- videoSource : undefined ,
63
- publishAudio : true ,
62
+ audioSource : false ,
63
+ videoSource : undefined , // undefined
64
+ publishAudio : false ,
64
65
publishVideo : true , //false
65
- resolution : '640x480' ,
66
- frameRate : 30 ,
67
- insertMode : 'APPEND' ,
68
66
mirror : false ,
69
67
} ) ;
70
68
71
- newSession . publish ( newPublisher ) ;
72
- const devices = await OV . current . getDevices ( ) ;
73
- const videoDevices = devices . filter (
74
- ( device ) => device . kind === 'videoinput'
75
- ) ;
76
- const currentVideoDeviceId = newPublisher . stream
77
- . getMediaStream ( )
78
- . getVideoTracks ( ) [ 0 ]
79
- . getSettings ( ) . deviceId ;
80
- const currentVideoDevice = videoDevices . find (
81
- ( device ) => device . deviceId === currentVideoDeviceId
82
- ) ;
69
+ await newSession . publish ( newPublisher ) ;
83
70
84
71
setSession ( newSession ) ;
85
72
setPublisher ( newPublisher ) ;
@@ -98,6 +85,7 @@ export default function Share() {
98
85
if ( session ) {
99
86
session . disconnect ( ) ;
100
87
}
88
+
101
89
OV . current = null ;
102
90
setSession ( undefined ) ;
103
91
setSubscribers ( [ ] ) ;
@@ -107,38 +95,6 @@ export default function Share() {
107
95
setPublisher ( undefined ) ;
108
96
} ;
109
97
110
- const switchCamera = async ( ) => {
111
- try {
112
- const devices = await OV . current . getDevices ( ) ;
113
- const videoDevices = devices . filter (
114
- ( device ) => device . kind === 'videoinput'
115
- ) ;
116
-
117
- if ( videoDevices . length > 1 ) {
118
- const newVideoDevice = videoDevices . find (
119
- ( device ) => device . deviceId !== currentVideoDevice . deviceId
120
- ) ;
121
- if ( newVideoDevice ) {
122
- const newPublisher = OV . current . initPublisher ( undefined , {
123
- videoSource : newVideoDevice . deviceId ,
124
- publishAudio : true ,
125
- publishVideo : true ,
126
- mirror : true ,
127
- } ) ;
128
-
129
- await session . unpublish ( mainStreamManager ) ;
130
- await session . publish ( newPublisher ) ;
131
-
132
- setCurrentVideoDevice ( newVideoDevice ) ;
133
- setMainStreamManager ( newPublisher ) ;
134
- setPublisher ( newPublisher ) ;
135
- }
136
- }
137
- } catch ( e ) {
138
- console . error ( e ) ;
139
- }
140
- } ;
141
-
142
98
const getToken = async ( ) => {
143
99
const sessionId = await createSession ( mySessionId ) ;
144
100
return await createToken ( sessionId ) ;
@@ -167,13 +123,13 @@ export default function Share() {
167
123
} ;
168
124
169
125
return (
170
- < div className = "flex h-screen w-[90 %] bg-gray-100 p-4" >
171
- < MyCanvas />
172
- < div className = "w-1/4 flex flex-col gap-2 ml-4" >
126
+ < div className = "flex h-screen w-[100 %] bg-gray-100 p-4" >
127
+ { mainStreamManager && < MyCanvas streamManager = { mainStreamManager } /> }
128
+ { /* <div className="w-1/4 flex flex-col gap-2 ml-4">
173
129
{[...Array(parseInt(3))].map((friend, index) => (
174
130
<FriendCanvas key={index} />
175
131
))}
176
- </ div >
132
+ </div> */ }
177
133
</ div >
178
134
) ;
179
135
}
0 commit comments