Когда стоит сменить REST на web socket?

Веб-приложение на ReactJS, nodejs+express сервер, бд PostgresSQL.
Сейчас все на REST. В основном - запросы данных при загрузке страниц (1-2 запроса на каждую страницу), но также есть несколько часто используемых полей ввода с динамическим автодополнением (то есть на каждый keyup происходит rest запрос в бд, чтобы найти подходящие варианты). Кроме того, есть не слишком важная система уведомлений. Real-time приход уведомлений не слишком важен, но лишним не будет.
Единственно важный функционал, который, как я думаю, напрасно сделан на REST вместо веб-сокета - это синхронизация данных пользователя. Дело в том, что пользователь может редактировать множество общих объектов в веб-приложении, и в некоторых случаях отредактированный объект может повлиять на данные пользователя, то есть их приходится запрашивать периодически из бд.
Хорошо ориентируюсь в REST, еще не работал с socket.io.

Собственно, вопрос:
Если перевести все общение с сервером на Socket.io, как это отразится на загруженность сервера?

Благодарю, за уделенное время!
  • Вопрос задан
  • 6161 просмотр
Пригласить эксперта
Ответы на вопрос 3
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
то есть на каждый keyup происходит rest запрос в бд

Немного не в тему, но можно делать так
jsfiddle.net/3m9593o2
spoiler
function Detour(cb, time) {
  this.cb = cb;
  this.interval = 0;
  this.time = time;
}
Detour.prototype.runNow = function(){
	clearTimeout(this.interval);
  this.cb.apply(null, arguments);
}
Detour.prototype.run = function() {
  clearTimeout(this.interval);
  var args = arguments;
  var cb = this.cb;
  this.interval = setTimeout(function(){
  	cb.apply(null, args);
  }, this.time);
}

var testCallback = new Detour(function(inputElement){
	console.log(inputElement.value);
},200);

$('#itarget').on('input change keyup', function(){
	testCallback.run(this);
})

Ответ написан
В общем случае при грамотной реализации снизится, так как клиенты не будут запрашивать сервер "а не изменилось ли что?".
Ответ написан
Комментировать
mannaro
@mannaro
Умею профессионально гуглить
Переведете все на сокеты, потом смените БД на mongo и получите meteor! :)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы