-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
85 lines (62 loc) · 1.61 KB
/
app.js
File metadata and controls
85 lines (62 loc) · 1.61 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
var events = require('events');
var eventEmitter = new events.EventEmitter();
const open = require('open');
const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
const path = require('path');
exports.express = express;
exports.http = http;
exports.app = app;
exports.io = io;
exports.port = 3000;
exports.server = 'localhost';
app.get('/socket.io/socket.io.js',(req,res)=>{
res.sendFile('node_modules/socket.io-client/dist/socket.io.js',{ root: process.cwd() });
})
exports.run =(autoOpenBrowser=true)=> {
http.listen(exports.port, () => {
console.log(`app listening at http://${exports.server}:${exports.port}`);
if (autoOpenBrowser) {
exports.openBrowser();
}
});
};
let countuser = 0;
exports.onconnect =(callback=false)=>{
io.on('connection', (socket) => {
countuser++;
if(callback){
callback(socket);
}
ondisconnect(socket);
});
}
exports.ondisconnect =(callback=false)=> {
eventEmitter.on('disconnect', callback);
}
function ondisconnect(socket) {
socket.on('disconnect', () => {
countuser--;
eventEmitter.emit('disconnect',socket);
if (countuser<=0) {
setTimeout(function () {
if (countuser<=0)
exports.close();
},2000);
}
});
}
exports.openBrowser=()=>{
(async () => {
// Opens the URL in the default browser.
await open(`http://${exports.server}:${exports.port}`);
})();
}
exports.setStatic=(_path,name)=>{
app.use(name, express.static(path.join(_path ,name)));
}
exports.close=()=>{
process.exit();
}