@kiberchainik
начинающий найкрутейшЫй програмЁр

Как сделать удаление кнопки?

едиственное что не получается так это не исчезает кнопка online со страницы когда автор ушел
клиент
$(function () {
  var user_login = $('#user_id').text();

	if($("div").is('#online')) {
		var auth_post = $('#online').attr('val');
  }

  //подключение к серверу
  var socket=io('https://findquick.it:3000');

  socket.on('connect', function (){//подключение к серверу

    socket.emit('login', user_login); //отправляем id авторизованного и id атвтора

    socket.on('createBtnChat', function (data) { //принимаем ответ от сервера и создаем кнопку online если ее нет
      if(data.id == auth_post) {
      		BtnCreateChat(data.id, data.login);
			} else {
        console.log('data.id() != auth_post()');
      }
    });

  	if($("div").is('#online')) { // если есть div с id online
      socket.emit('ifAuthorOnline', auth_post);
  	}

    socket.on('disconnect', function (id) {
      setTimeout(function () {
        $('#createChat_'+id).remove();
        console.log('btn for author '+id+' is deleted');
      }, 500);
    });
  });
});

function BtnCreateChat(id, login) {
    if($("#createChat_"+$('#online').attr('val')).length === 0) { //если еще нет кнопки, что автор в сети
      $('#online').append('<button data="'+id+'" id="createChat_'+id+'" class="btn btn-primary btn-sm">'+login+' online</button>');
    }
}


сервер
var users_login_list = {};
var user_ids = [];

io.on('connection', function(socket) {
  socket.on('login', function(id_user_login) { //принимаем id пользователя который должен аторизоваться
    connection.query('update * set * = ?, * = ? where * = ?', [1, socket.id, id_user_login], function (err, res) {
  		if(err) console.log(err);
    	else {
        connection.query('select *, * from * where * = ?', [id_user_login], function(err, login){
          io.emit('createBtnChat', {id: id_user_login, login: login[0].login});
          user_ids.push(id_user_login); //позволяет добавить один, или более элементов в конец массива
          socket.user_id = id_user_login;
          users_login_list[id_user_login] = socket.id;
        });
      }
  	});
  });

  socket.on('ifAuthorOnline', function(id_author) {
    connection.query('select *, * from * where * = ? and * = ?', [1, id_author], function (err, res) {
      if(err) console.log(err);
      else {
        if (res != '') { //если запрос вернул результат с id пользователя
            //тогда отправляем ответ с кнопкой клиенту
            io.emit('createBtnChat', {id: res[0].id, login: res[0].login});
            //console.log('Author '+res[0].login+' is online');
        }
      }
    });
  });

  socket.on('disconnect', function () {
    setTimeout(function () {
      connection.query('update * set * = ?, * = NULL where * = ?', [0,  socket.id], function (err, res) {
  		    if(err) console.log(err);
          else {
            user_ids.splice( user_ids.indexOf(socket.user_id), 1 );
            delete users_login_list[socket.user_id];
  		    }
  	  });
    }, 1000);
  });
});
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект