Browse Source

clean code

Yuki Takei 5 năm trước cách đây
mục cha
commit
dfae4461f7

+ 9 - 11
src/server/crowi/index.js

@@ -9,7 +9,6 @@ const Xss = require('@commons/service/xss');
 const { getMongoUri, mongoOptions } = require('@commons/util/mongoose-utils');
 
 const path = require('path');
-const WebSocket = require('ws');
 
 const mongoose = require('mongoose');
 
@@ -70,7 +69,6 @@ function Crowi(rootdir) {
   this.events = {
     user: new (require(`${self.eventsDir}user`))(this),
     page: new (require(`${self.eventsDir}page`))(this),
-    search: new (require(`${self.eventsDir}search`))(this),
     bookmark: new (require(`${self.eventsDir}bookmark`))(this),
     tag: new (require(`${self.eventsDir}tag`))(this),
     admin: new (require(`${self.eventsDir}admin`))(this),
@@ -82,6 +80,7 @@ Crowi.prototype.init = async function() {
   await this.setupModels();
   await this.setupSessionConfig();
   await this.setupConfigManager();
+  await this.setupSocketIoService();
 
   // customizeService depends on AppService and XssService
   // passportService depends on appService
@@ -265,6 +264,13 @@ Crowi.prototype.setupConfigManager = async function() {
   }
 };
 
+Crowi.prototype.setupSocketIoService = async function() {
+  const SocketIoService = require('../service/socket-io');
+  if (this.socketIoService == null) {
+    this.socketIoService = new SocketIoService();
+  }
+};
+
 Crowi.prototype.setupModels = async function() {
   Object.keys(models).forEach((key) => {
     return this.model(key, models[key](this));
@@ -396,8 +402,7 @@ Crowi.prototype.start = async function() {
     }
   });
 
-  // setup socket.io
-  await this.setupSocketIoService(serverListening);
+  this.socketIoService.attachServer(serverListening);
 
   // setup Express Routes
   this.setupRoutesAtLast();
@@ -575,11 +580,4 @@ Crowi.prototype.setupImport = async function() {
   }
 };
 
-Crowi.prototype.setupSocketIoService = async function(server) {
-  const SocketIoService = require('../service/socket-io');
-  if (this.socketIoService == null) {
-    this.socketIoService = new SocketIoService(server);
-  }
-};
-
 module.exports = Crowi;

+ 0 - 11
src/server/events/search.js

@@ -1,11 +0,0 @@
-const util = require('util');
-const events = require('events');
-
-function SearchEvent(crowi) {
-  this.crowi = crowi;
-
-  events.EventEmitter.call(this);
-}
-util.inherits(SearchEvent, events.EventEmitter);
-
-module.exports = SearchEvent;

+ 0 - 14
src/server/routes/admin.js

@@ -13,15 +13,12 @@ module.exports = function(crowi, app) {
     aclService,
     slackNotificationService,
     exportService,
-    socketIoService,
   } = crowi;
 
   const recommendedWhitelist = require('@commons/service/xss/recommended-whitelist');
   const ApiResponse = require('../util/apiResponse');
   const importer = require('../util/importer')(crowi);
 
-  const searchEvent = crowi.event('search');
-
   const MAX_PAGE_LIST = 50;
   const actions = {};
 
@@ -85,17 +82,6 @@ module.exports = function(crowi, app) {
     return pager;
   }
 
-  // setup websocket event for rebuild index
-  // searchEvent.on('addPageProgress', (total, current, skip) => {
-  //   socketIoService.getAdminSocket().emit('admin:addPageProgress', { total, current, skip });
-  // });
-  // searchEvent.on('finishAddPage', (total, current, skip) => {
-  //   socketIoService.getAdminSocket().emit('admin:finishAddPage', { total, current, skip });
-  // });
-  // searchEvent.on('rebuildingFailed', (error) => {
-  //   socketIoService.getAdminSocket().emit('admin:rebuildingFailed', { error: error.message });
-  // });
-
   actions.index = function(req, res) {
     return res.render('admin/index');
   };

+ 4 - 5
src/server/service/search-delegator/elasticsearch.js

@@ -17,10 +17,9 @@ const BULK_REINDEX_SIZE = 100;
 
 class ElasticsearchDelegator {
 
-  constructor(configManager, socketIoService, crowi) {
+  constructor(configManager, socketIoService) {
     this.configManager = configManager;
-    // this.socketIoService = socketIoService;
-    this.crowi = crowi;
+    this.socketIoService = socketIoService;
 
     this.client = null;
 
@@ -226,7 +225,7 @@ class ElasticsearchDelegator {
     catch (error) {
       logger.warn('An error occured while \'rebuildIndex\', normalize indices anyway.');
 
-      const socket = this.crowi.socketIoService.getAdminSocket();
+      const socket = this.socketIoService.getAdminSocket();
       socket.emit('rebuildingFailed', { error: error.message });
 
       throw error;
@@ -361,7 +360,7 @@ class ElasticsearchDelegator {
     const Bookmark = mongoose.model('Bookmark');
     const PageTagRelation = mongoose.model('PageTagRelation');
 
-    const socket = this.crowi.socketIoService.getAdminSocket();
+    const socket = this.socketIoService.getAdminSocket();
 
     // prepare functions invoked from custom streams
     const prepareBodyForCreate = this.prepareBodyForCreate.bind(this);

+ 2 - 4
src/server/service/search.js

@@ -42,17 +42,15 @@ class SearchService {
   initDelegator() {
     logger.info('Initializing search delegator');
 
-    const searchEvent = this.crowi.event('search');
-
     if (this.isSearchboxEnabled) {
       logger.info('Searchbox is enabled');
       const SearchboxDelegator = require('./search-delegator/searchbox.js');
-      return new SearchboxDelegator(this.configManager, searchEvent, this.crowi);
+      return new SearchboxDelegator(this.configManager, this.crowi.socketIoService);
     }
     if (this.isElasticsearchEnabled) {
       logger.info('Elasticsearch (not Searchbox) is enabled');
       const ElasticsearchDelegator = require('./search-delegator/elasticsearch.js');
-      return new ElasticsearchDelegator(this.configManager, searchEvent, this.crowi);
+      return new ElasticsearchDelegator(this.configManager, this.crowi.socketIoService);
     }
 
   }

+ 7 - 1
src/server/service/socket-io.js

@@ -2,7 +2,7 @@ const socketIo = require('socket.io');
 
 class SocketIoService {
 
-  constructor(server) {
+  attachServer(server) {
     this.io = socketIo(server, {
       transports: ['websocket'],
     });
@@ -12,10 +12,16 @@ class SocketIoService {
   }
 
   getDefaultSocket() {
+    if (this.io == null) {
+      throw new Error('Http server has not attached yet.');
+    }
     return this.io.sockets;
   }
 
   getAdminSocket() {
+    if (this.io == null) {
+      throw new Error('Http server has not attached yet.');
+    }
     return this.adminNamespace;
   }