Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / разработка чата (или скайпа, или аськи) для сайта / 25 сообщений из 26, страница 1 из 2
21.11.2015, 15:15
    #39109707
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Пишу чат (или скайп, или аську) для использования на сайте. Требуется показывать пользователю вновь поступившие сообщения в режим реального времени.
Размышления как это сделать такие:
Периодически по таймеру, 2-3 раза в минуту, запрашиваем не появились ли непрочитанные сообщения, в случае появления даем звуковой сигнал и рисуем запечатанный конвертик. Все хорошо, НО! если пользователь откроет на сайте несколько вкладок код будет дублироваться, запросы на наличие обновлений будут делаться с каждой открытой вкладки, в несколько раз чаще, звуковой сигнал на каждое новое сообщение тоже прозвучит несколько раз.
А как можно избежать этого? Есть программный способ на js определить что этот сайт уже открыт в другой вкладке? Или такие задачи как-то по другому делаются?
Буду благодарен за любые подсказки.
...
Рейтинг: 0 / 0
21.11.2015, 15:56
    #39109716
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
...
Рейтинг: 0 / 0
21.11.2015, 21:44
    #39109843
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
ЛебедкинПишу чат (или скайп, или аську) для использования на сайте. Требуется показывать пользователю вновь поступившие сообщения в режим реального времени.
Размышления как это сделать такие:
Периодически по таймеру, 2-3 раза в минуту, запрашиваем не появились ли непрочитанные сообщения, в случае появления даем звуковой сигнал и рисуем запечатанный конвертик. Все хорошо, НО! если пользователь откроет на сайте несколько вкладок код будет дублироваться, запросы на наличие обновлений будут делаться с каждой открытой вкладки, в несколько раз чаще, звуковой сигнал на каждое новое сообщение тоже прозвучит несколько раз.
А как можно избежать этого? Есть программный способ на js определить что этот сайт уже открыт в другой вкладке? Или такие задачи как-то по другому делаются?
Буду благодарен за любые подсказки.
websocket и все проблемы забыты
...
Рейтинг: 0 / 0
21.11.2015, 23:35
    #39109930
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
вадя,

о, вадя нарисовался. Расскажи где про websockets почитать. Давно хотел заняться
...
Рейтинг: 0 / 0
22.11.2015, 10:25
    #39110029
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
вадяwebsocket и все проблемы забыты
я читал на википедии, что в опере и лисе по умолчанию websockets отключен, из-за потенциальных проблем с безопасностью. это есть большая проблема, т.к. часть пользователей чатом просто не смогут пользоваться.
...
Рейтинг: 0 / 0
22.11.2015, 10:50
    #39110041
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
а еще я так и не понял, как websocket может помочь решить проблему открытия нескольких окон с одного сайта?
...
Рейтинг: 0 / 0
22.11.2015, 11:13
    #39110051
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
MikkiMouse,
https://learn.javascript.ru/websockets тут для браузера
...
Рейтинг: 0 / 0
22.11.2015, 11:15
    #39110053
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Лебедкинвадяwebsocket и все проблемы забыты
я читал на википедии, что в опере и лисе по умолчанию websockets отключен, из-за потенциальных проблем с безопасностью. это есть большая проблема, т.к. часть пользователей чатом просто не смогут пользоваться.
это было давно, даже в ишаках последних есть такое
...
Рейтинг: 0 / 0
22.11.2015, 11:20
    #39110056
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Лебедкина еще я так и не понял, как websocket может помочь решить проблему открытия нескольких окон с одного сайта?
тут надо конкретно решать проблему от чего защищаться— на сервере проверять с какого ip идет подключение и по ws сообщить на вторично открытые окна о недопустимости
...
Рейтинг: 0 / 0
22.11.2015, 11:27
    #39110059
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
тут надо в мозгах закрепить — сервер может САМ отправлять сообщения клиентам. сообщения это может быть всё что угодно.
к прмеру у меня первая часть (до определенного разделителя) - команда, точнее имя функции, которая обрабатывает, следующие дальше данные.
...
Рейтинг: 0 / 0
22.11.2015, 11:33
    #39110062
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Лебедкина еще я так и не понял, как websocket может помочь решить проблему открытия нескольких окон с одного сайта?
используя ws не возникнет той проблемы, что у тебя в начале — сообщения от сервера можно направлять только на первую открытую вкладку/окно
и долбить сервер запросами не требуется , нагрузка на сервер минимальна
...
Рейтинг: 0 / 0
22.11.2015, 11:50
    #39110071
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
да, я понял. то что сервер сам может отправлять сообщения клиенту и не надо его постоянно опрашивать на появление новых сообщений - это конечно хорошо и очень круто! но проблема у меня немного в другом:
допустим пользователь бродит по сайту, открывая при этом разные страницы в разных вкладках, причем страница с самим чатом у него может быть и не открыта. в какой-то момент, бац! ему приходит новое сообщение, которое он должен сразу это заметить.
как реализовать?
...
Рейтинг: 0 / 0
22.11.2015, 11:53
    #39110072
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
вадяиспользуя ws не возникнет той проблемы, что у тебя в начале — сообщения от сервера можно направлять только на первую открытую вкладку/окно
а если пользователь случайно закроет как-раз первую вкладку?
...
Рейтинг: 0 / 0
22.11.2015, 12:01
    #39110074
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Лебедкинда, я понял. то что сервер сам может отправлять сообщения клиенту и не надо его постоянно опрашивать на появление новых сообщений - это конечно хорошо и очень круто! но проблема у меня немного в другом:
допустим пользователь бродит по сайту, открывая при этом разные страницы в разных вкладках, причем страница с самим чатом у него может быть и не открыта. в какой-то момент, бац! ему приходит новое сообщение, которое он должен сразу это заметить.
как реализовать?
как два пальца :)
варианты на вскидку...
посылается команда на открытие страницы в новой вкладке с чатом. , всплывает модальное окно ....
просто на каждой странице надо наличие функции для обработки такого сообщения,это не проблема
...
Рейтинг: 0 / 0
22.11.2015, 12:03
    #39110075
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Лебедкинвадяиспользуя ws не возникнет той проблемы, что у тебя в начале — сообщения от сервера можно направлять только на первую открытую вкладку/окно
а если пользователь случайно закроет как-раз первую вкладку?
закроет первую — первой станет следующая :)
главное не ограничивать себя старыми подходами :)
...
Рейтинг: 0 / 0
22.11.2015, 12:06
    #39110076
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
сообщением может быть и кусок html ...., который можно с помощью jQuery вставить
...
Рейтинг: 0 / 0
22.11.2015, 12:11
    #39110078
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
вадякак два пальца :)
варианты на вскидку...
посылается команда на открытие страницы в новой вкладке с чатом. , всплывает модальное окно ....
просто на каждой странице надо наличие функции для обработки такого сообщения,это не проблема
я имел ввиду не как визуально для пользователя это представить, а как это реализовать этот процесс в плане опроса сервера, чтобы и лишних соединений не было, и сообщение не пропустить.
...
Рейтинг: 0 / 0
22.11.2015, 12:13
    #39110080
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
вадязакроет первую — первой станет следующая :)
как следующая вкладка узнает, что ей пора главной становиться?
...
Рейтинг: 0 / 0
22.11.2015, 12:21
    #39110084
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Лебедкинвадязакроет первую — первой станет следующая :)
как следующая вкладка узнает, что ей пора главной становиться?
это будет автоматом на сервере. каждая страница создаёт подключение — получается массив/список удаление одного — назначает следующего автоматом, вот на него и передаётся
...
Рейтинг: 0 / 0
22.11.2015, 12:28
    #39110088
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
т.е. каждая открытая вкладка создает websocket соединение, а на стороне сервера определяем какие соединения относятся к одному и тому-же клиенту, и отправляем событие только на одно соединение для каждого клиента. так?
...
Рейтинг: 0 / 0
22.11.2015, 12:32
    #39110090
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
Лебедкинт.е. каждая открытая вкладка создает websocket соединение, а на стороне сервера определяем какие соединения относятся к одному и тому-же клиенту, и отправляем событие только на одно соединение для каждого клиента. так?
да. тут надо логику на сервере продумать, ничего сложного в этом нет
...
Рейтинг: 0 / 0
22.11.2015, 12:39
    #39110091
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
ясно, спасибо за наводку. обдумаю этот вариант.
только по ip клиента некорректно определять, за одним ip могут быть разные клиенты (proxy, nat) тут скорей куки передавать надо и по ним ориентироваться.
...
Рейтинг: 0 / 0
22.11.2015, 22:02
    #39110492
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
А зачем куки, если можно каждой сессии номер присвоить и по номеру передавать?
...
Рейтинг: 0 / 0
24.11.2015, 13:12
    #39112024
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
qi_ipА зачем куки, если можно каждой сессии номер присвоить и по номеру передавать?
ну в принципе можно и номер сессии, либо id пользователя и т.п.
это уже не так принципиально, сессия все-равно на куках держится.
...
Рейтинг: 0 / 0
24.11.2015, 15:18
    #39112248
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разработка чата (или скайпа, или аськи) для сайта
наверное лучше куки. один пользователь может зайти с двух разных браузеров. или с планшета и десктопа. а куки говорят о том, что это один браузер.

sockjs кстати, очень хорошая вещь.. не всегда с websocket удается подружиться.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / разработка чата (или скайпа, или аськи) для сайта / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]