forked from webhacking/WebRTC-Example-With-Typescript
/
serve.ts
48 lines (44 loc) · 1.48 KB
/
serve.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import * as http from 'https';
import * as fs from 'fs';
import * as socketIo from 'socket.io';
const server = http.createServer({
key: fs.readFileSync('./certificate/localhost_key.pem').toString(),
cert: fs.readFileSync('./certificate/localhost_cert.pem').toString()
}, (req, res) => {
res.statusCode = 200;
console.log('req.url', req.url);
if ( req.url === '/calls/' ) {
res.setHeader('Content-Type', 'text/html');
res.write(fs.readFileSync("./dist/html/main.html", {encoding: "utf8"}));
} else {
res.setHeader('Content-Type', 'application/javascript');
res.write(fs.readFileSync('.' + req.url, {encoding: "utf8"}));
}
res.end();
});
server.listen(8080, '10.0.1.39');
const io = socketIo(server);
io.origins('*:*');
let connectedSocketIds = [];
io.on('connection', (socket: any) => {
socket.on('join-call', () => {
connectedSocketIds.push(socket.id);
socket.emit('search-users', connectedSocketIds.filter(id => id !== socket.id));
});
socket.on('user-video-pause', (data) => {
socket.broadcast.emit('user-video-pause', {
userSocketId: socket.id,
pause: data.pause
} );
});
socket.on('user-audio-mute', () => {
socket.broadcast.emit('user-audio-mute', socket.id);
});
socket.on('disconnect', () => {
connectedSocketIds = connectedSocketIds.filter(id => id !== socket.id);
socket.broadcast.emit('user-leave', socket.id);
});
socket.on('signaling', (data) => {
socket.to(data.to).emit('signaling', data);
});
});