msgRemote.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. var utils = require('../../../util/utils');
  2. var logger = require('pomelo-logger').getLogger('forward-log', __filename);
  3. /**
  4. * Remote service for backend servers.
  5. * Receive and handle request message forwarded from frontend server.
  6. */
  7. module.exports = function(app) {
  8. return new Remote(app);
  9. };
  10. var Remote = function(app) {
  11. this.app = app;
  12. };
  13. /**
  14. * Forward message from frontend server to other server's handlers
  15. *
  16. * @param msg {Object} request message
  17. * @param session {Object} session object for current request
  18. * @param cb {Function} callback function
  19. */
  20. Remote.prototype.forwardMessage = function(msg, session, cb) {
  21. var server = this.app.components.__server__;
  22. var sessionService = this.app.components.__backendSession__;
  23. if(!server) {
  24. logger.error('server component not enable on %s', this.app.serverId);
  25. utils.invokeCallback(cb, new Error('server component not enable'));
  26. return;
  27. }
  28. if(!sessionService) {
  29. logger.error('backend session component not enable on %s', this.app.serverId);
  30. utils.invokeCallback(cb, new Error('backend sesssion component not enable'));
  31. return;
  32. }
  33. // generate backend session for current request
  34. var backendSession = sessionService.create(session);
  35. // handle the request
  36. logger.debug('backend server [%s] handle message: %j', this.app.serverId, msg);
  37. server.handle(msg, backendSession, function(err, resp, opts) {
  38. utils.invokeCallback(cb, err, resp, opts);
  39. });
  40. };