|
|
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, хочу реализовать такое: Пользователь отправляет асинхронно текст админу. Админ читает у себя на странице этот текст и отвечает юзеру. Загвоздка в том чтобы ответ получил именно этот пользователь, а ни кто то другой. С помощью чего такое можно реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 10:14:48 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
net send :) а хранить reply-to в сообщении не вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 11:37:42 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
авторnet send :) а хранить reply-to в сообщении не вариант? Расскажите пожалуйста подробнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 12:57:45 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ZhazhahРасскажите пожалуйста подробнее О чем? Храните в сообщении адрес отправителя, чтобы потом можно было ответ маршрутизировать по конкретному адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 13:04:36 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
Честно сказать не понял, что именно хранить в сообщении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 13:15:00 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ZhazhahЧестно сказать не понял, что именно хранить в сообщении любой уникальный идентификатор по которому вы сможете найти отправителя сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 13:21:45 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
Прошу прощения забыл сказать что пользователи не зареганы на сайте, поэтому уникального идентификатора нет + юзер может начать писать админу с десяти вкладок и в каждое окно нужно вернуть свое сообщение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 13:48:59 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
BlazkowiczZhazhahЧестно сказать не понял, что именно хранить в сообщении любой уникальный идентификатор по которому вы сможете найти отправителя сообщения. Я думаю вы переоцениваете ТС, насколько я понял там банальный чат, меня поначалу тоже смутила фраза асинхронно отправляю.. Наверное имеется ввиду что-то вроде - выделил текст - нажал пожаловаться админу - админ увидел это на отдельной странице - написал ответ, а юзер, который писал увидит это уже в основном окне чата. Хотя конечно тоже могу ошибаться:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 13:49:07 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ZhazhahПрошу прощения забыл сказать что пользователи не зареганы на сайте, поэтому уникального идентификатора нет + юзер может начать писать админу с десяти вкладок и в каждое окно нужно вернуть свое сообщение У каждого юзера должен быть идентификатор, иначе как ты их различишь? Обычно генерируется временное имя noname1, noname2, и делается соотвествие между сгенерированным именем и куками например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 13:50:57 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ZhazhahПрошу прощения забыл сказать что пользователи не зареганы на сайте, поэтому уникального идентификатора нет + юзер может начать писать админу с десяти вкладок и в каждое окно нужно вернуть свое сообщение Если сайт на Java, что подразумевает название этого форума, то у каждого юзера есть jsessionid, котрым можно воспользоваться. Сложить сообщение юзеру в сессию и проверять при каждом заходе. Вы задаёте совершенно общий вопрос, не вдаваясь в детали реализации. Такое ощущение что на Java есть единственный возможный способ реализовать сайт и чат. Поэтому мы заведомо все должны знать как именно у вас что уже реализовано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 13:53:15 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
авторЯ думаю вы переоцениваете ТС, насколько я понял там банальный чат, меня поначалу тоже смутила фраза асинхронно отправляю.. Наверное имеется ввиду что-то вроде - выделил текст - нажал пожаловаться админу - админ увидел это на отдельной странице - написал ответ, а юзер, который писал увидит это уже в основном окне чата. Хотя конечно тоже могу ошибаться:) Принцип тот же, однако смотрите: Что если юзер откроет еще одну вкладку в браузере и опять начнет писать. Что тогда делать? +надо всегда быть в курсе того онлайн пользователь или нет. Уже банальный чат превращается в кучу кода. Очень классный вариант как мне показалось сейчас ServerSocket думаю покопать в эту сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 14:11:35 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ZhazhahЧто если юзер откроет еще одну вкладку в браузере и опять начнет писать. Что тогда делать? +надо всегда быть в курсе того онлайн пользователь или нет. Уже банальный чат превращается в кучу кода. Ну, современные браузеры вроде разумеют, что другая вкладка того же сайта это ещё не новая сессия. ZhazhahОчень классный вариант как мне показалось сейчас ServerSocket думаю покопать в эту сторону. WebSocket, а не ServerSocket. Работает не во всех браузерах. Или вы лепите Flash/Applet, тогда можно и через ServerSocket общатся. Но это никак не решает вашей проблемы отсутствия идентификатора. Можно ещё про COMET вспомнить. Но страшно. Работать надо, а то опять начнется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 14:14:37 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
авторНу, современные браузеры вроде разумеют, что другая вкладка того же сайта это ещё не новая сессия. Я это и имею ввиду: допустим я в данный момент общаюсь с одним человеком, открываю новую вкладку и уже общаюсь с другим человеком. Как на основе сессии определить в какое окно отправить сообщение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 14:23:52 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ZhazhahЯ это и имею ввиду: допустим я в данный момент общаюсь с одним человеком, открываю новую вкладку и уже общаюсь с другим человеком. Как на основе сессии определить в какое окно отправить сообщение? Тогда делайте на COMET у каждого окна будет свой канал с сервером. Только тогда у админа тоже будет два окна от одного юзера. :) Оно админу надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 14:40:29 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
авторТогда делайте на COMET у каждого окна будет свой канал с сервером. Только тогда у админа тоже будет два окна от одного юзера. :) Оно админу надо? В моем случае надо. Спасибо про COMET только что узнал - это сервер такой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 15:00:56 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ZhazhahСпасибо про COMET только что узнал - это сервер такой? Нет это AJAX long pulling. Страница отправляет запрос серверу. А сервер вместо того чтобы отдать ответ весь сразу, выдаёт его по частям. Каждое сообщение от админа, говорит серверу отдать часть сообщения. Сервер записывает сообщени в response, браузер получает, и обновляет HTML, показывая сообщение юзеру. Каждое окно браузера создаст свой собственный канал с сервером. Ваша задача это создать UID для такого канала на сервере и связать с чатом админа, чтобы по UID находить response и писать туда ответы. Гуглите COMET chat - примеров масса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 15:05:29 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
Сейчас посыпятся возражения, что JSF - это зло, но описанную задачу можно попробовать реализовать используя jsf conversation. На стороне клиента вполне укладываемся в это понятие, на стороне админа придется немного покумекать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 15:21:12 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ivanraСейчас посыпятся возражения, что JSF - это зло, но описанную задачу можно попробовать реализовать используя jsf conversation. На стороне клиента вполне укладываемся в это понятие, на стороне админа придется немного покумекать Вы серьезно считаете что JSF подходящая технология для чата? Да, теоретически конверсейшенс крутая штука, но на то чтобы изучить jsf+seam + настройка проекта - займет гораздо меньше времени чем на изучение cometServlet:) а так как больших преимуществ это не даст, но возможно перформанс просядет - смысл?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 15:24:43 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
сорри, гораздо больше времени, опечатался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 15:25:20 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ivanraСейчас посыпятся возражения, что JSF - это зло, но описанную задачу можно попробовать реализовать используя jsf conversation. На стороне клиента вполне укладываемся в это понятие, на стороне админа придется немного покумекать Чат. На JSF. Да с анонимными юзерами. Гы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 15:31:34 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
забыл никivanraСейчас посыпятся возражения, что JSF - это зло, но описанную задачу можно попробовать реализовать используя jsf conversation. На стороне клиента вполне укладываемся в это понятие, на стороне админа придется немного покумекать Вы серьезно считаете что JSF подходящая технология для чата? Да, теоретически конверсейшенс крутая штука, но на то чтобы изучить jsf+seam + настройка проекта - займет гораздо меньше времени чем на изучение cometServlet:) а так как больших преимуществ это не даст, но возможно перформанс просядет - смысл?? Единственный минус в моем предложении - изучение jsf, который по окончании превращается в плюс, так как приобретенный скилл резко повышает шансы найти приличную работу. Кстати, в jsf2.x уже можно обойтись без seam. Беспокоимся о трафике - так никто не заставляет гонять туда-сюда всю форму, достаточно передавать изменения. cometServlet в данной задаче - несерьезно (ну-ка, сколько одновременно открытых соединений потянет сервер?), разве что решение рассчитано на небольшое количество пользователей, но в этом случае и про перфоманс можно не думать. Привязываться к сессии + уникальному идентификатору страницы (на каждой закладке браузера ведутся свои переговоры) - изобретать тот же самый conversation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 16:12:37 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ivanraзабыл никпропущено... Вы серьезно считаете что JSF подходящая технология для чата? Да, теоретически конверсейшенс крутая штука, но на то чтобы изучить jsf+seam + настройка проекта - займет гораздо меньше времени чем на изучение cometServlet:) а так как больших преимуществ это не даст, но возможно перформанс просядет - смысл?? Единственный минус в моем предложении - изучение jsf, который по окончании превращается в плюс, так как приобретенный скилл резко повышает шансы найти приличную работу. Кстати, в jsf2.x уже можно обойтись без seam. Беспокоимся о трафике - так никто не заставляет гонять туда-сюда всю форму, достаточно передавать изменения. cometServlet в данной задаче - несерьезно (ну-ка, сколько одновременно открытых соединений потянет сервер?), разве что решение рассчитано на небольшое количество пользователей, но в этом случае и про перфоманс можно не думать. Привязываться к сессии + уникальному идентификатору страницы (на каждой закладке браузера ведутся свои переговоры) - изобретать тот же самый conversation. Как ни странно, но лично мое мнение, что в вашем сообщении можно поменять местами comet и jsf, тогда все будет правильно:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 16:17:33 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ivanraЕдинственный минус в моем предложении - изучение jsf, Ну, изучить это всегда плюс. Минус в том, что после изучения и реализации осознаешь, что на jQuery+Servlet сделал бы то же самое неделю назад и оно бы было намного проще. ivanraкоторый по окончании превращается в плюс, так как приобретенный скилл резко повышает шансы найти приличную работу. Субъективно. ivanracometServlet в данной задаче - несерьезно (ну-ка, сколько одновременно открытых соединений потянет сервер?), разве что решение рассчитано на небольшое количество пользователей, но в этом случае и про перфоманс можно не думать. В чем проблема количества открытых соединений? Серверу, в целом, пофиг. Разве что на линухе иногда лимит нужно подкрутить. Чат это почти всегда сервер push, и вот, как раз, обычный polling вместо long polling увеличит нагрузку на сервер значильно. ivanraПривязываться к сессии + уникальному идентификатору страницы (на каждой закладке браузера ведутся свои переговоры) - изобретать тот же самый conversation. Только проще в разы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 16:18:32 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
BlazkowiczivanracometServlet в данной задаче - несерьезно (ну-ка, сколько одновременно открытых соединений потянет сервер?), разве что решение рассчитано на небольшое количество пользователей, но в этом случае и про перфоманс можно не думать. В чем проблема количества открытых соединений? Серверу, в целом, пофиг. Разве что на линухе иногда лимит нужно подкрутить. Чат это почти всегда сервер push, и вот, как раз, обычный polling вместо long polling увеличит нагрузку на сервер значильно. ivanraПривязываться к сессии + уникальному идентификатору страницы (на каждой закладке браузера ведутся свои переговоры) - изобретать тот же самый conversation. Только проще в разы. Возможно, я и ошибаюсь (если cometServlet это какой-то особенный сервлет), но в случае сервлета соединение означает не только открытый сокет, но и поток, хотя бы и ждущий. Так что одной настройкой ОС не обойтись. А что касается изобретения собственного conversation - ну, наверно, можно, хотя и там наверняка будут подводные камни. Не проще взять готовый велосипед? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 16:45:36 |
|
||
|
Чат для сайта
|
|||
|---|---|---|---|
|
#18+
ivanraВозможно, я и ошибаюсь (если cometServlet это какой-то особенный сервлет), но в случае сервлета соединение означает не только открытый сокет, но и поток, хотя бы и ждущий. Ну, начинается. Так проблема уже не в сокетах а в потоках? По-моему сейчас даже на винде 10К спящих потоков не проблема. А на линухе, так и подавно. ivanraТак что одной настройкой ОС не обойтись. Конкретику давайте. Под линухом там строгие лимиты на количество открытых хэндлов, поэтому приходится конфигурять. Под виндой... Ну, если под XP запускать, то да. Нагрузка может оказаться не разумной. Но если нормальный Windows Server взять, то проблем с тысячами потоков и сокетов не будет никакой. ivanraА что касается изобретения собственного conversation - ну, наверно, можно, хотя и там наверняка будут подводные камни. Не проще взять готовый велосипед? Если бы это был велосипед. На деле это неподъемная телега о пятнадцати колесах. Реально вот в этом можно что-то понять, не изучая полного цикла JSF во всех ипостасиях: http://docs.oracle.com/javaee/6/api/javax/enterprise/context/ConversationScoped.html Это же просто жесть. Т.е. сформулировать кратко и ёмко что такое ConversationScoped даже в JavaDoc не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2013, 17:05:44 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38123289&tid=2130126]: |
0ms |
get settings: |
14ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 436ms |

| 0 / 0 |
