Звук проигрую так:
var audio = new Audio();
audio.src = 'audio/message.ogg';
audio.play();
Долбить сервер ajax запросами не круто. Уж лучше long pool какой-нибудь сделать, но всё равно не то. Можно попробовать прикрутить
SockJS. А для маргиналов голые вебсокеты
XakepPRO, Потому что можно легко устроить самый настоящий ддос даже при небольшой посещаемости.
Да и потом, лучше же держать постоянное соединение, чем тратить время на кучу подключений.
Сегодня надо оповещения о почте, завтра еще кучку уведомлений.
Хорошо, если додумался все оповещения разом присылать, в случае с периодическими запросами.
А теперь попробуй представить, какая будет нагрузка при этом. Потому лучше открыть один раз соединение и когда надо, сервер сам уведомит юзера о чем требуется.
reaper, Не согласен в некоторых аспектах с тобой.
Ajax и нагрузка на сервер, смотря с какой стороны посмотреть.
К примеру на моём сервере хостер мне даёт 30 соединений для одного пользователя к базе за 1 секунду, в нормальном режиме за 1 минуту пользователь может сделать 60*30 = 240 подключений это потолок.
А теперь смотрим на DDOS, пускай какой-то Вася-Гость решил положить наш сервер, что делаю я:
1. Закрываю полностью сайт от гостей и делаю только главную открытой.
2. Все ajax скрипты выношу только для пользователей.
3. В Джоне есть прекрасная функция кеширования количества запросов, ставлю лимит на 200 запросов в минуту. Если Вася решит накручивать и ложить хост у него нечего не выйдет, так как лимит для его акка будет исчерпан и он увидет только ошибку.
Главное в уведомлениях через ajax учитывать скорость обновления уведомления для одного пользователя * на количество пользователей онлайн. Не делать обновление почты каждые 2 секунды, а поставить 1 минуту.
И делов то.
А вообще DDOS он и в Африке DDOS, либо он направлен на целый сайт либо на однун агруженную страницу. Защиту от него нужно уже в рамках сервера юзать. Моё имхо.
Либо даже самую безобидную страницу с одним запросом к базе, а чаще всего атака будет на главную страницу. А они с более чем одним запросом - можно положить сервак за считанные часы. Главное недопустить зацикленности. Постоянное соединение с базой - хорошо, но его нужно сбрасывать время от времени.
# reaper (13.12.2014 / 01:47)
XakepPRO, Потому что можно легко устроить самый настоящий ддос даже при небольшой посещаемости.
ну если сервак совсем уж дерьмовый...
а кол-во уведомлений как может увеличить кол-во запросов, если ты все их будешь получать от одного запроса и уже js будет их обрабатывать и раскидывать по странице?
юзверь с таким же успехом будет сидеть и обновлять страницу в ожидании нового сообщения, только делать он это будет неконтролируемо по частоте, и пожирать больше ресурсов т.к. каждый раз ему сервер будет отдавать не минимум данных а целую страницу от и до.
ramzes, в том-то и дело. Нет разницы, будем ли обновлять страницу (трогаем базу, делаем вывод), или делать ajax-запрос (трогаем базу, чуть меньше запросов, чистый вывод json, ie). Так чем ajax хуже?
reaper, на твой пост (
13.12.2014 / 02:47) отвечу, раньше у apache была уязвимость, что если держать сединение (keep-alive), то при определенном количестве потоков сервер падал, не хватало либо процессорнрго времени, либо памяти. Вот. Сейчас такого нет вроде, но я хз. Надо покапать эту тему.
Если бы действительно было достаточно периодических запросов, то вряд ли бы вообще изобрели COMET, WebSockets. При периодических запросах ресурсы сервера используются не рационально. Данные не могут быть получены сразу, а только во время очередного запроса.
Задержки большие. Страдает отзывчивость. Куча мусорного входящего трафика на сервере.
В итоге при более менее нормальной посещалке всё торомзит и глючит.
XakepPRO, nginx уже сто лет как умеет проксировать веб-сокеты.