Показать сообщение отдельно
  #1 (permalink)  
Старый 01.04.2018, 14:16
Интересующийся
Отправить личное сообщение для monstantin Посмотреть профиль Найти все сообщения от monstantin
 
Регистрация: 04.01.2017
Сообщений: 12

Socket IO + MongoDB
Клиент
<form method="POST">
	<input type="text" name="title">
	<button>Отправить</button>
</form>

<ul id="list"></ul>

<script src="/socket.io/socket.io.js"></script>
<script>

	var socket = io();

	function getDataForm(ev) {
		 socket.emit('SubmitForm', { title: title.value });
		 title.value = '';
		 ev.preventDefault();
	}

        form.addEventListener('submit', getDataForm);

	// Принимаем данные от сервера
	socket.on('news', function (data) {
		 // Выводим данные в ul#list
        });	

</script>



Сервер
app.get('/', (req,res) => {
	res.render('home');
});


io.on('connection', function(socket){
    socket.on('SubmitForm', function (data) {
 	
      new Articles({ title :  data.title }).save();


    // Отправляем обновленные данные клиенту 
    Articles.find((err, articles) => {        
    	 socket.emit('news', articles);
    }).sort({date : -1});

  });

  Articles.find((err, articles) => {        
      socket.emit('news', articles);
  }).sort({date : -1});

});


При подключении, emit news отрабатывает отлично, отправляет все данные клиенту, где они уже и выводятся, но как только клиент отправляет новые новые данные на сервер, ожидается , что после добавления(new Articles), данные вновь обновятся и клиент получит уже обновленные данные.

Этого не происходит, при клике данные добавляются, но не обновляются, приходиться обновлять страницу для получения результата
Ответить с цитированием