@historydev
Острая аллергия на анимешников

Почему socket.io обработчик не отображает данные?

Доброй ночи.У меня возник казус,я не могу отобразить данные по сокетам..Они появляются на секунду и пропадают так-же быстро..Помогите пожалуйста.Подключение к ним работает.

Сервер:
app.get('/menu', (req,res) => {
	res.sendFile(__dirname + '/menu.html')
	connection.query('SELECT * FROM menu', (err, result) => {
	  if(err) {
	    console.error(err);
	    return;
	  }
	  const index = result.reduce((acc, row) => ({...acc, [row.id]: row}), {});
	  const menu = [];
	  for(const row of result) {
	    if(row.parent_id === 0) {
	      menu.push(row);
	      continue;
	    }
	    const parent = index[row.parent_id];
	    if(!parent) {
	      console.warn(`Undefined parent with id ${row.parent_id}`);
	      continue;
	    }
	    if(!parent.children) {
	      parent.children = [];
	    }
	    parent.children.push(row);
	  }
	  io.emit('menu',menu)
	});
})


Клиент:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="initial-scale=1.0,width=device-width,height=device-height,user-scalable=no">
	<title>Menu</title>
	<style type="text/css">
		nav {
			color: #555;
		}
	</style>
</head>
<body>

	<nav></nav>


	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>	

	<script type="text/javascript">

		var io = io('http://localhost:56026/');

		

			function makeMenuLevel(menuItems) {
				$(document).ready(function() {
					  return `<ul>${menuItems.map(
					    item =>`<li>${item.title}${item.children ? makeMenuLevel(item.children) : ''}</li>`
					  ).join('')}</ul>`;
				})
			}

			io.on('menu', (data) => {
				console.log(data)
				let menu = makeMenuLevel(data)
				$('nav').append(menu)
			})

	</script>
</body>
</html>
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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