@LAMbl4

Как правильно связать модули socket.io Node.js?

На сервере выполняются 2 функции:
1. Получение пользователя(хранятся в бд)
2. Создание маркера пользователем(хранятся в бд и передаются по сокету)
Хочу вынести эти 2 функции в отдельные модули, при попытки разделить все хорошо работает, но запросы к бд начинают работать синхронно т.е. ответ от бд не успевает приходить, а сервер уже отсылает ответ
//app.js
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var db = require('./db');
var User = require('./user/UserController');

server.listen(8080);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/page/index.html');
});

io.on('connection', function (socket) {
  console.log('connect user:' + socket.id);
  
  socket.on('GetUser', function (id) {
		socket.emit('SendUser',  User.Get(id));
    })
  })
  
  socket.on('disconnect', function () {
	io.emit('user disconnected');
    console.log('disconnect user:' + socket.id);
  });
});

// UserController.js
var express = require('express');
var router = express.Router();
var User = require('./User');

// GETS A SINGLE USER FROM THE DATABASE
var UserController = {
	Get : function (fb_id) {
		User.findOne(fb_id , function (err, user) {
			var res
			
			if (err) res = JSON.stringify({ success: 'false', message: 'There was a problem finding the user.' });
			else if (!user) res = JSON.stringify({ success: 'false', message: 'No user found.' });
			else res = JSON.stringify({ success: 'true', message: 'return user.', result: user });

			return res;
		})
	}
}

module.exports =  UserController;
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Alino4ka
async/await либо callback и по нему уже делать отправку сообщения в socket.io
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы