Всем привет. Вот есть проверка на пустоту данных. Код (Text): if((nameVal) && (msg)){ socket.emit( 'message', { name: nameVal, message: msg } )}; Интересует как реализовать следующее: Код (Text): if((nameVal) && (msg)){ //сюда добавить переменную, которая будет прибавлять к текущем времени 3 секунды. socket.emit( 'message', { name: nameVal, message: msg } )}; И надо реализовать проверку, что текущее время больше того времени, которое было прибавлено. т.е. я делаю проверку от флуда и сообщение нельзя отправлять чаще, чем каждые 3 секунды. Помогите пожалуйста. Может надо по другому?
(nameVal) && (msg) В скобках пишите, чтобы проверенее проверенного было? Вообще переменные так не проверяются на пустоту ибо есть typeof и undefined. И скобки лишнее...
По-другому в отличие от чего? Где хоть какое-то решение? А то показаны какие-то странные проверки и далее какой-то сокет. Вообще нужно от чего-то отталкиваться, где-то хранить время отсчета (время предыдущего действия), с которым можно сравнивать текущее время. За 3 секунды скрипт может выполниться тысячи раз, и вызывать его могут с разных адресов тысячи клиентов. Если скрипт не должен часто выполнять полезное действие для всех клиентов, то можно сохранять предыдущее время в файле. Если для каждого клиента, то в сессиях. Смотри функцию time()
В js это: Код (PHP): var date=new Date(серверное время); date.getTime(); Но беда, беда, нужно отталкиваться от серверного времени иначе оно будет у всех разное.
Да надо серверное время и наверно записывать в сессии. Суть такова, что сообщение человек не мог отправить чаще чем каждые 2 секунды. Это чат. А строчка которую я скидывал просто выполняет функцию отправки сообщения. Обычный сокет. Найти бы пример.
Обычный таймер, ничего сложного.. Типа отправил задисайбилось: "поле, кнопка" и ниже "2, 1, 0", раздисайбилось! А в случае если, что-то не так, то на сервере скажет ему в лобешник, что не катит только через 2 сек.
Код (PHP): function time(time) { var timer=setInterval(function() { if(0===time) { clearInterval(timer); } else { --time; } },1000); }