1 | const path = require('path');
|
2 | const fs = require('fs');
|
3 |
|
4 | const logger = getLogger('core.websocket');
|
5 |
|
6 | module.exports = function (server, auth) {
|
7 | const io = require('socket.io').listen(
|
8 | server,
|
9 | {origins: '*:*', transports: ['websocket', 'polling']},
|
10 | );
|
11 | logger.info(`websocket server start success, running at ws://127.0.0.1:${share.config.port}`);
|
12 |
|
13 | io.on('connection', (socket) => {
|
14 | logger.info('a user connected', socket.id);
|
15 | });
|
16 |
|
17 |
|
18 | share.config.websocketMiddleware.forEach((m) => {
|
19 | let who = 'app';
|
20 | let mFile = `${share.APP_PATH}app${path.sep}middleware${path.sep}${m}.js`;
|
21 | if (!fs.existsSync(mFile)) {
|
22 | who = 'framework';
|
23 | mFile = `${share.FRAMEWORK_PATH}lib${path.sep}middleware${path.sep}${m}.js`;
|
24 | }
|
25 | io.use(require(mFile)(io));
|
26 | logger.info(`require ${who} middleware: ${m}`);
|
27 | return m;
|
28 | });
|
29 |
|
30 | io.on('connect', (socket) => {
|
31 | if (typeof auth === 'function') {
|
32 | console.log('1');
|
33 | }
|
34 |
|
35 | socket.on('disconnect', () => {
|
36 | logger.info(`client ${socket.id} disconnected`);
|
37 | });
|
38 | logger.info(`client ${socket.id} connected`);
|
39 | });
|
40 |
|
41 | global.getWebsocket = function () {
|
42 | return io;
|
43 | };
|
44 | };
|