|
|
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Пишу чат (или скайп, или аську) для использования на сайте. Требуется показывать пользователю вновь поступившие сообщения в режим реального времени. Размышления как это сделать такие: Периодически по таймеру, 2-3 раза в минуту, запрашиваем не появились ли непрочитанные сообщения, в случае появления даем звуковой сигнал и рисуем запечатанный конвертик. Все хорошо, НО! если пользователь откроет на сайте несколько вкладок код будет дублироваться, запросы на наличие обновлений будут делаться с каждой открытой вкладки, в несколько раз чаще, звуковой сигнал на каждое новое сообщение тоже прозвучит несколько раз. А как можно избежать этого? Есть программный способ на js определить что этот сайт уже открыт в другой вкладке? Или такие задачи как-то по другому делаются? Буду благодарен за любые подсказки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 15:15 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 15:56 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
ЛебедкинПишу чат (или скайп, или аську) для использования на сайте. Требуется показывать пользователю вновь поступившие сообщения в режим реального времени. Размышления как это сделать такие: Периодически по таймеру, 2-3 раза в минуту, запрашиваем не появились ли непрочитанные сообщения, в случае появления даем звуковой сигнал и рисуем запечатанный конвертик. Все хорошо, НО! если пользователь откроет на сайте несколько вкладок код будет дублироваться, запросы на наличие обновлений будут делаться с каждой открытой вкладки, в несколько раз чаще, звуковой сигнал на каждое новое сообщение тоже прозвучит несколько раз. А как можно избежать этого? Есть программный способ на js определить что этот сайт уже открыт в другой вкладке? Или такие задачи как-то по другому делаются? Буду благодарен за любые подсказки. websocket и все проблемы забыты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 21:44 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
вадя, о, вадя нарисовался. Расскажи где про websockets почитать. Давно хотел заняться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 23:35 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
вадяwebsocket и все проблемы забыты я читал на википедии, что в опере и лисе по умолчанию websockets отключен, из-за потенциальных проблем с безопасностью. это есть большая проблема, т.к. часть пользователей чатом просто не смогут пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 10:25 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
а еще я так и не понял, как websocket может помочь решить проблему открытия нескольких окон с одного сайта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 10:50 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, https://learn.javascript.ru/websockets тут для браузера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 11:13 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Лебедкинвадяwebsocket и все проблемы забыты я читал на википедии, что в опере и лисе по умолчанию websockets отключен, из-за потенциальных проблем с безопасностью. это есть большая проблема, т.к. часть пользователей чатом просто не смогут пользоваться. это было давно, даже в ишаках последних есть такое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 11:15 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Лебедкина еще я так и не понял, как websocket может помочь решить проблему открытия нескольких окон с одного сайта? тут надо конкретно решать проблему от чего защищаться— на сервере проверять с какого ip идет подключение и по ws сообщить на вторично открытые окна о недопустимости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 11:20 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
тут надо в мозгах закрепить — сервер может САМ отправлять сообщения клиентам. сообщения это может быть всё что угодно. к прмеру у меня первая часть (до определенного разделителя) - команда, точнее имя функции, которая обрабатывает, следующие дальше данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 11:27 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Лебедкина еще я так и не понял, как websocket может помочь решить проблему открытия нескольких окон с одного сайта? используя ws не возникнет той проблемы, что у тебя в начале — сообщения от сервера можно направлять только на первую открытую вкладку/окно и долбить сервер запросами не требуется , нагрузка на сервер минимальна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 11:33 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
да, я понял. то что сервер сам может отправлять сообщения клиенту и не надо его постоянно опрашивать на появление новых сообщений - это конечно хорошо и очень круто! но проблема у меня немного в другом: допустим пользователь бродит по сайту, открывая при этом разные страницы в разных вкладках, причем страница с самим чатом у него может быть и не открыта. в какой-то момент, бац! ему приходит новое сообщение, которое он должен сразу это заметить. как реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 11:50 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
вадяиспользуя ws не возникнет той проблемы, что у тебя в начале — сообщения от сервера можно направлять только на первую открытую вкладку/окно а если пользователь случайно закроет как-раз первую вкладку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 11:53 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Лебедкинда, я понял. то что сервер сам может отправлять сообщения клиенту и не надо его постоянно опрашивать на появление новых сообщений - это конечно хорошо и очень круто! но проблема у меня немного в другом: допустим пользователь бродит по сайту, открывая при этом разные страницы в разных вкладках, причем страница с самим чатом у него может быть и не открыта. в какой-то момент, бац! ему приходит новое сообщение, которое он должен сразу это заметить. как реализовать? как два пальца :) варианты на вскидку... посылается команда на открытие страницы в новой вкладке с чатом. , всплывает модальное окно .... просто на каждой странице надо наличие функции для обработки такого сообщения,это не проблема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:01 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Лебедкинвадяиспользуя ws не возникнет той проблемы, что у тебя в начале — сообщения от сервера можно направлять только на первую открытую вкладку/окно а если пользователь случайно закроет как-раз первую вкладку? закроет первую — первой станет следующая :) главное не ограничивать себя старыми подходами :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:03 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
сообщением может быть и кусок html ...., который можно с помощью jQuery вставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:06 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
вадякак два пальца :) варианты на вскидку... посылается команда на открытие страницы в новой вкладке с чатом. , всплывает модальное окно .... просто на каждой странице надо наличие функции для обработки такого сообщения,это не проблема я имел ввиду не как визуально для пользователя это представить, а как это реализовать этот процесс в плане опроса сервера, чтобы и лишних соединений не было, и сообщение не пропустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:11 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
вадязакроет первую — первой станет следующая :) как следующая вкладка узнает, что ей пора главной становиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:13 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Лебедкинвадязакроет первую — первой станет следующая :) как следующая вкладка узнает, что ей пора главной становиться? это будет автоматом на сервере. каждая страница создаёт подключение — получается массив/список удаление одного — назначает следующего автоматом, вот на него и передаётся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:21 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
т.е. каждая открытая вкладка создает websocket соединение, а на стороне сервера определяем какие соединения относятся к одному и тому-же клиенту, и отправляем событие только на одно соединение для каждого клиента. так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:28 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
Лебедкинт.е. каждая открытая вкладка создает websocket соединение, а на стороне сервера определяем какие соединения относятся к одному и тому-же клиенту, и отправляем событие только на одно соединение для каждого клиента. так? да. тут надо логику на сервере продумать, ничего сложного в этом нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:32 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
ясно, спасибо за наводку. обдумаю этот вариант. только по ip клиента некорректно определять, за одним ip могут быть разные клиенты (proxy, nat) тут скорей куки передавать надо и по ним ориентироваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 12:39 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
А зачем куки, если можно каждой сессии номер присвоить и по номеру передавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2015, 22:02 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
qi_ipА зачем куки, если можно каждой сессии номер присвоить и по номеру передавать? ну в принципе можно и номер сессии, либо id пользователя и т.п. это уже не так принципиально, сессия все-равно на куках держится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 13:12 |
|
||
|
разработка чата (или скайпа, или аськи) для сайта
|
|||
|---|---|---|---|
|
#18+
наверное лучше куки. один пользователь может зайти с двух разных браузеров. или с планшета и десктопа. а куки говорят о том, что это один браузер. sockjs кстати, очень хорошая вещь.. не всегда с websocket удается подружиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39110059&tid=1445609]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 425ms |

| 0 / 0 |
