Skip to content

Commit 227ebb7

Browse files
peerjs server && remove out socket client form db
1 parent d3f1428 commit 227ebb7

File tree

4 files changed

+223
-121
lines changed

4 files changed

+223
-121
lines changed

streamServer/index.js

Lines changed: 146 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
1-
// // DB
2-
// const admin = require('firebase-admin');
3-
// const serviceAccount = require('./serviceAccountKey.json');
4-
// //initialize admin SDK using serciceAcountKey
5-
// admin.initializeApp({
6-
// credential: admin.credential.cert(serviceAccount),
7-
// databaseURL: "https://stream-it-d368f.firebaseio.com"
1+
// DB
2+
const admin = require('firebase-admin');
3+
const serviceAccount = require('./serviceAccountKey.json');
4+
//initialize admin SDK using serciceAcountKey
5+
admin.initializeApp({
6+
credential: admin.credential.cert(serviceAccount),
7+
databaseURL: "https://stream-it-d368f.firebaseio.com"
88

9-
// });
9+
});
1010

11-
// const db = admin.firestore();
12-
// const { v4: uuidv4 } = require('uuid');
13-
// const customGenerationFunction = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
11+
const db = admin.firestore();
12+
const auth = admin.auth();
13+
const { v4: uuidv4 } = require('uuid');
14+
const customGenerationFunction = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
1415

15-
// // web app
16-
// const express = require('express');
17-
// const bodyParser = require('body-parser')
18-
// var cors = require('cors')
16+
// web app
17+
const express = require('express');
18+
const bodyParser = require('body-parser')
19+
var cors = require('cors')
1920

20-
// const { ExpressPeerServer } = require('peer');
21+
const { ExpressPeerServer } = require('peer');
2122

22-
// const app = express();
23-
// const http = require('http');
24-
// const { firestore } = require('firebase-admin');
23+
const app = express();
24+
const http = require('http');
25+
const { firestore } = require('firebase-admin');
2526

26-
// const server = http.createServer(app);
27+
const server = http.createServer(app);
2728

2829
// const peerServer = ExpressPeerServer(server, {
2930
// debug: true,
3031
// path: '/myapp',
31-
// generateClientId:uuidv4()
32+
// generateClientId:customGenerationFunction
3233
// });
3334

34-
// app.use('/peerjs', peerServer);
35+
36+
3537

3638
// peerServer.on('disconnect',async (client)=>{
3739
// let clientID = client.getId();
@@ -55,114 +57,137 @@
5557

5658
// // let roomRef = await db.collection("indexing").doc(clientID)
5759
// })
60+
// app.use('/peerjs', peerServer);
61+
app.use(cors());
62+
app.use(bodyParser.json())
63+
app.get('/', (req, res, next) => res.send('Hello world!'));// == OR ==
64+
65+
app.get("/test",async(req,res)=>{
66+
let clientID = "rxg00ufwdvb00000";
67+
let roomRef = db.collection("indexing").doc(clientID);
68+
let roomRefData = await roomRef.get();
69+
if (roomRefData.exists) {
70+
console.log(roomRefData.data());
71+
let removeClient = await db.doc(roomRefData.get("roomRef"));
72+
let specificclient = `candidates.${clientID}`
73+
await removeClient.update({
74+
[specificclient]:firestore.FieldValue.delete()
75+
})
76+
await roomRef.delete();
77+
res.send("OK");
78+
}
79+
else{
80+
res.send("@@");
81+
}
5882

59-
// app.use(cors());
60-
// app.use(bodyParser.json())
61-
// app.get('/', (req, res, next) => res.send('Hello world!'));// == OR ==
6283

63-
// app.get("/test",async(req,res)=>{
64-
// let clientID = "rxg00ufwdvb00000";
65-
// let roomRef = db.collection("indexing").doc(clientID);
66-
// let roomRefData = await roomRef.get();
67-
// if (roomRefData.exists) {
68-
// console.log(roomRefData.data());
69-
// let removeClient = await db.doc(roomRefData.get("roomRef"));
70-
// let specificclient = `candidates.${clientID}`
71-
// await removeClient.update({
72-
// [specificclient]:firestore.FieldValue.delete()
73-
// })
74-
// await roomRef.delete();
75-
// res.send("OK");
76-
// }
77-
// else{
78-
// res.send("@@");
79-
// }
84+
})
8085

86+
app.post("/signup",async (res,resp)=>{
87+
try {
88+
if (res.body !=null) {
89+
console.log(res.body);
90+
let user = await auth.createUser(res.body)
91+
if (user.uid != null) {
92+
resp.status(200).send(res.body)
93+
}
94+
}
95+
} catch (error) {
96+
console.log(error)
97+
resp.status(500).send({status:"fail"})
98+
}
99+
})
81100

82-
// })
101+
app.post('/removeRoom', async (req, res) => {
102+
try {
103+
console.log(req.body);
104+
if (req.body != null) {
105+
let path = req.body.path.toString();
106+
let hostUUID = req.body.host;
107+
let roomRef = db.doc(path);
108+
let roomData = await roomRef.get()
109+
if (roomData.exists) {
110+
console.log("valid Room");
111+
if (hostUUID == roomData.get("host")) {
112+
roomRef.delete();
113+
res.sendStatus(200).send();
114+
}else{
115+
res.sendStatus(401).send();
116+
}
117+
}else{
118+
res.sendStatus(401).send();
119+
}
120+
}
121+
} catch (error) {
122+
123+
}
124+
});
125+
126+
app.post('/createRoom', async (req, res) => {
127+
try {
128+
console.log(req.body)
129+
if (req.body != null) {
130+
let roomConfig = req.body;
131+
console.log(req.body)
132+
let roomRef = await db.collection("rooms").add(
133+
roomConfig
134+
)
135+
if ((await db.doc(roomRef.path).get()).exists) {
136+
console.log("Room Exitetedsss");
137+
}
138+
res.send(roomRef.path);
139+
} else {
140+
res.send("fail");
141+
}
142+
} catch (error) {
143+
console.log(error);
144+
}
145+
})
83146

84-
// app.post('/removeRoom', async (req, res) => {
85-
// try {
86-
// console.log(req.body);
87-
// if (req.body != null) {
88-
// let path = req.body.path.toString();
89-
// let hostUUID = req.body.host;
90-
// let roomRef = db.doc(path);
91-
// let roomData = await roomRef.get()
92-
// if (roomData.exists) {
93-
// console.log("valid Room");
94-
// if (hostUUID == roomData.get("host")) {
95-
// roomRef.delete();
96-
// res.sendStatus(200).send();
97-
// }else{
98-
// res.sendStatus(401).send();
99-
// }
100-
// }else{
101-
// res.sendStatus(401).send();
102-
// }
103-
// }
104-
// } catch (error) {
147+
let PORT = 8080
148+
server.listen(PORT, () => {
149+
console.log(`http://localhost:${PORT}`)
150+
});
105151

106-
// }
107-
// });
152+
// const fs = require('fs')
153+
// const express = require('express');
154+
// const { ExpressPeerServer } = require('peer');
155+
// const cors = require('cors')
156+
// const app = express();
108157

109-
// app.post('/createRoom', async (req, res) => {
110-
// try {
111-
// console.log(req.body)
112-
// if (req.body != null) {
113-
// let roomConfig = req.body;
114-
// console.log(req.body)
115-
// let roomRef = await db.collection("rooms").add(
116-
// roomConfig
117-
// )
118-
// if ((await db.doc(roomRef.path).get()).exists) {
119-
// console.log("Room Exitetedsss");
120-
// }
121-
// res.send(roomRef.path);
122-
// } else {
123-
// res.send("fail");
124-
// }
125-
// } catch (error) {
126-
// console.log(error);
158+
// app.get('/', (req, res, next) => res.send('Hello world!'));
159+
// app.post('/signup',async (res,resp)=>{
160+
// if (res.body != null) {
161+
// console.log(res.body);
127162
// }
128163
// })
164+
// const customGenerationFunction = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
165+
// const http = require('http');
129166

130-
// server.listen(9000, () => {
131-
// console.log("http://localhost:9000")
132-
// });
133-
134-
const fs = require('fs')
135-
const express = require('express');
136-
const { ExpressPeerServer } = require('peer');
137-
const cors = require('cors')
138-
const app = express();
139-
140-
app.get('/', (req, res, next) => res.send('Hello world!'));
141-
const customGenerationFunction = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
142-
const http = require('http');
167+
// // const credentail =
168+
// // {
169+
// // key: fs.readFileSync('./domain.key'),
170+
// // cert: fs.readFileSync('./domain.crt')
171+
// // };
143172

144-
// const credentail =
145-
// {
146-
// key: fs.readFileSync('./domain.key'),
147-
// cert: fs.readFileSync('./domain.crt')
148-
// };
149-
150-
const server = http.createServer(
151-
app);
152-
const peerServer = ExpressPeerServer(server, {
153-
debug: true,
154-
// ssl: {
155-
// key: fs.readFileSync('./domain.key'),
156-
// cert: fs.readFileSync('./domain.crt')
157-
// },
158-
// path: '/myapp',
159-
generateClientId: customGenerationFunction
160-
});
161-
peerServer.on('disconnect', (client) => {
162-
console.log(`Discoonect : ${client.getId()}`)
163-
})
164-
app.use(cors());
165-
app.use('/peerjs', peerServer);
173+
// const server = http.createServer(
174+
// app);
175+
// server.listen(9000);
176+
// const peerServer = ExpressPeerServer(server, {
177+
// debug: true,
178+
// // ssl: {
179+
// // key: fs.readFileSync('./domain.key'),
180+
// // cert: fs.readFileSync('./domain.crt')
181+
// // },
182+
// path: '/myapp',
183+
// generateClientId: customGenerationFunction
184+
// });
185+
// peerServer.on('disconnect', (client) => {
186+
// console.log(`Discoonect : ${client.getId()}`)
187+
// })
188+
// peerServer.on('connection',(client)=>{
189+
// console.log(client.getId);
190+
// })
191+
// app.use(cors());
192+
// app.use('/peerjs', peerServer);
166193

167-
server.listen(9000,"0.0.0.0");
168-
// ipconfig getifaddr en0

streamServer/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"description": "",
55
"main": "index.js",
66
"scripts": {
7+
"start": "node index.js",
78
"test": "echo \"Error: no test specified\" && exit 1"
89
},
910
"author": "",

streamServer/peerjs-server.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
const admin = require('firebase-admin');
2+
const serviceAccount = require('./serviceAccountKey.json');
3+
//initialize admin SDK using serciceAcountKey
4+
admin.initializeApp({
5+
credential: admin.credential.cert(serviceAccount),
6+
databaseURL: "https://stream-it-d368f.firebaseio.com"
7+
8+
});
9+
10+
const { v4: uuidv4 } = require('uuid');
11+
12+
const { firestore } = require('firebase-admin');
13+
const db = admin.firestore();
14+
const auth = admin.auth();
15+
const { PeerServer } = require('peer');
16+
17+
const customGenerationFunction = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
18+
19+
const peerServer = PeerServer({
20+
port: 9000,
21+
path: '/myapp',
22+
generateClientId: customGenerationFunction
23+
});
24+
25+
peerServer.on('connection', (client) => {
26+
console.log(`Client connectwd : ${client.getId()}`)
27+
})
28+
29+
async function delectRoom(path) {
30+
let roomRef = db.doc(path);
31+
let totoalCandidates = await roomRef.get();
32+
if (Object.keys(totoalCandidates.get("candidates")).length >= 1 ) {
33+
console.log("Do nothing");
34+
}else{
35+
console.log(`${totoalCandidates.data()}`)
36+
await roomRef.delete()
37+
}
38+
}
39+
40+
peerServer.on('disconnect', async (client) => {
41+
let clientID = client.getId();
42+
console.log(`Client : ${clientID}`);
43+
let roomRef = db.collection("indexing").doc(clientID);
44+
let roomRefData = await roomRef.get();
45+
if (roomRefData.exists) {
46+
console.log(roomRefData.data());
47+
let removeClient = await db.doc(roomRefData.get("roomRef"));
48+
let specificclient = `candidates.${clientID}`
49+
await removeClient.update({
50+
[specificclient]: firestore.FieldValue.delete()
51+
})
52+
await roomRef.delete(); // indexing collection doc delelet
53+
console.log(`Remove peer : ${clientID} from Room : ${roomRef.path}`)
54+
55+
await delectRoom(roomRefData.get("roomRef"))
56+
57+
}
58+
else {
59+
console.log("Faile to remove client");
60+
}
61+
62+
63+
// let roomRef = await db.collection("indexing").doc(clientID)
64+
})

streamServer/serviceAccountKey.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"type": "service_account",
3+
"project_id": "stream-it-d368f",
4+
"private_key_id": "ad8e6b2ea70e2798b65c16d0e6799eb3f698dfd9",
5+
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCQ6rRVe1QMbdJb\nuAZiNfW2Y2F+6YzRpsac1Io/Sel++WGYHcAoHjBbyID7qRuGhciFUSjgHXsNP8XF\nt0JCcMs94fwNY8Y4Ab46ge/8andUlc+kzFBgpfC3i6UPkCmPGIaeQvAPBEMLQJLJ\n7HYRDRp2VE+58mjSTzwidfX/qngtgMQy6HFTE8JSgYE1AT3T/6C8TIBY5KK9upMv\nIscl7bEhkRWeEi19hgCx6eONfOyKSTDYQ3x4lMBb+wPicFJ/pat+Ha2Gytqv8a1j\ngCrrVCVr8SUqggXrAHKIWDu5NUnnRVMCjC8B80/rZUF4rtP2RtwFdD5PS29jaEbU\n7PFy47gZAgMBAAECggEAEH6GVAxw0+apa23AsZZOse8R08N6wbS9JRs+jlbipWR2\napKdonNShxUv3nUFqwQN1LluG5l/aKdPjWIpv9eIFTJkNpSapRlIW5nFL50L7qwL\n3EgHsK3H05GovI1ouDQkbl2pZoF9ArTbgEbSZr0aZp7QtutpFDbsiJzrM6m60ALi\nJAslORKXT3hvfcpN15ISBA7EMFlvY24Yzd0Gmm0aO6nIFG3WbXeR7hraYJ6nMtGh\nYTiO0zUoDzJ74EH4S8RIZEWRMJfmok7g4qnFxNqdwCCjmj5a6zJt6rl2gxP2tysu\nZY9aKyyR1G0zvolZvJfEbZ3JkSd/fOoYpGEHUohqeQKBgQDBAgDFb9dSjXuVlj6M\nnbk01LoMaCmjAB0W7xxBmktQLjchYUzp5+Myskvy00ZA6bZ4Fdo45MK7eSLXMaJa\njXiOb6KQfqTXiGd0JYPlcvoG/YVXAvwynLfF2TjZxcIY1Tps6IepwlBeXrpEun1h\noOSbRL72jgn+JlkWHq529t/0cwKBgQDANqY879lgqr5AVes5gpq/QChxdDWqZJXb\nwD+orzjhjbJepKtzA9MChLQj0BLwTpzfmkhQ1TAl6YGy1MyrFFyDvn7FDeBwZb5T\nRaClhSbBmykHaiZPE7YpOVY0m58mh6W3m5IWA0E2kONbVhOCvXrtibK5EXU4QQ3+\nLWmSLgzKQwKBgFrQCnTbbsDU+TUlAEFBZQdKoE9+IzkisI097Fmhs5YCaMY39eyI\nwwnzgnC6n++jB8vw3ECwwj9be90s6WsZ7YN3W1IJhJ40/BhWHn0zYBkx6C9MpEVc\nH8vjrTAqMG1mxpq/vjVNzGrav2HfLWdmQKod6owvwNvoRzp1LTmkZzOpAoGAKpCv\nlZUDzW1iPjsIoS6z+CBMFHvImpg1u3lCX6eV8BUB6AWNViYFp2wdvESKvR6bjMTM\nuOHNDMg+CY0oWcZjimU4C4k8J4fQcv5bSexHnd4vYs3199MEpvJkjbfcsZqebx+L\nZUaJPX0ua/6OyYgOXeX9ZxBfpfp6D8ycsVtzR6MCgYBZbAxDlViZMOqLtFvAHivD\nk8OHtGkoWHiczNczziUBx84xCchkkdxB55qPo9To3nC/DMpbydwKWp4h4Qjr7m6c\nG2yk4zxoak73az48hLSeS2AnMPhYe/g9FA4IuD3GQYWOiiU/TYor/4xKbm2gsGCt\nbzyIRmDwQhbFCBWgpxMaGQ==\n-----END PRIVATE KEY-----\n",
6+
"client_email": "[email protected]",
7+
"client_id": "110588337311459279380",
8+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
9+
"token_uri": "https://oauth2.googleapis.com/token",
10+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11+
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-9rda7%40stream-it-d368f.iam.gserviceaccount.com"
12+
}

0 commit comments

Comments
 (0)