Крон П.
2 повідомлення
#15 років тому
Сейчас появляются сервисы, которые сделаны как анонимные видео-чаты. Юзер приходит, нажимает кнопку и ему система находит какого-нибудь другого юзера, у которого работает видеокамера. Например,

Вопрос: можно ли с технической/технологической точки зрения сделать такой чат в интернете, но без использования сервера, т.е. чтобы данные ходили от юзера к юзеру сразу? Может ПО для этого нужно специальное или еще что-то?

Если кто ответит или намекнет, куда копать/к кому обратиться, буду очень признателен.
Роман Беляев
16382 повідомлення
#15 років тому
Совсем без сервера - не выйдет. Само общение производить p2p - возможно.
Крон П.
2 повідомлення
#15 років тому
Цитата ("frig"):
Совсем без сервера - не выйдет. Само общение производить p2p - возможно.


А роль сервера в этом случае в чем будет заключаться? Просто мне кажется, если есть такая возможность, можно существенно снизить нагрузку на сервер.
Максим Б.
2206 повідомлень
#15 років тому
Можно. Полно отдельного софта для этой цели. На подобии виндового NetMeeting Работает напрямую от клиента к клиенту без сервера. Для web можно active-x компоненту написать которая будет работать без сервера, напрямую.
Роман Беляев
16382 повідомлення
#15 років тому
Цитата:
А роль сервера в этом случае в чем будет заключаться?


Роль сервера в том, чтобы сообщить одному клиенту адрес другого. Иначе установить связь напрямую нельзя. Нужно знать адрес, чтобы открыть соединение. Нет адреса - нет мультиков. Его, конечно, можно продиктовать по телефону или переслать по почте, но это не особо удобно

Pixorama, как без сервера узнать адрес того, с кем связываешься?
Сергей К.
2345 повідомлень
#15 років тому
Мне тоже расскажите - вдруг пригодится )
Артем Л.
11416 повідомлень
#15 років тому
Цитата ("frig"):
Pixorama, как без сервера узнать адрес того, с кем связываешься?

Так связываешься же с тем, кого знаешь ))) и адрес знаешь и все остальное и конектишся
Роман Беляев
16382 повідомлення
#15 років тому
Цитата ("Hungry_Hunter"):
и адрес знаешь и все остальное и конектишся


IP? Я вот не знаю ip ни одного человека с кем общаюсь.

Это уже не говоря о том, что если оба человека за NATом, то без сервера вообще никак.
Артем Л.
11416 повідомлень
#15 років тому
Цитата ("frig"):
Я вот не знаю ip ни одного человека с кем общаюсь.

Так можно же спросить
Роман Беляев
16382 повідомлення
#15 років тому
Так я своего не знаю
А если спросить, то это уже
Цитата ("frig"):
Его, конечно, можно продиктовать по телефону или переслать по почте, но это не особо удобно

Но проблемы с натами это не решает.
Владимир М.
578 повідомлень
#15 років тому
Цитата ("frig"):
Так я своего не знаю
а зайти в какой-нибудь whatismyip.** и увидеть - не судьба?
Цитата ("frig"):
роблемы с натами это не решае
а стороннему серверу видней ваш ЗаНатовыйАйпи чем вам или чем вашему партнеру по видеосвязи? он то со стороны веб такой же третий клиент по отношению к внутренней сетки как и ваш партнер...
Максим Б.
2206 повідомлень
#15 років тому
Цитата ("frig"):
Pixorama, как без сервера узнать адрес того, с кем связываешься?


Сразу видно, человек не застал, или застал только краем начало развития сетевых технологий Упустил всю прелесть игры по диалапному модему в Doom, Duke Nukem, Warcraft Говоришь другу свой номер телефона, и вперед Тут так же, говоришь человеку с которым хочешь законнектиться свой ip и вперед. А для веба можно сделать сервер, через который не будет происходить общение, а только клиентские программы будут передавать свои адреса. Ну примерно как у Скайпа.
Роман Беляев
16382 повідомлення
#15 років тому
Цитата ("vladmax"):
а зайти в какой-нибудь whatismyip.** и увидеть - не судьба?


и это, по вашему мнение будет массовый сервис? а "какой нибудь" это уже не сервер?

Цитата ("vladmax"):
а стороннему серверу видней ваш ЗаНатовыйАйпи чем вам или чем вашему партнеру по видеосвязи? он то со стороны веб такой же третий клиент по отношению к внутренней сетки как и ваш партнер...

а вот тут как раз надо понимать, что у сервера будет реальный IP к которому можно поцепиться из-за ната как одному так и другому участнику чата. Тогда весь траф пойдет через этот сервер. Так что вовсе он не такой же как партнер за натом. Или вы знаете способ открыть соединение на конкретную машину за натом? Просветите

Цитата ("Pixorama"):
Тут так же, говоришь человеку с которым хочешь законнектиться свой ip и вперед.

выше все написано.
Цитата ("Pixorama"):
А для веба можно сделать сервер, через который не будет происходить общение, а только клиентские программы будут передавать свои адреса. Ну примерно как у Скайпа.


выше опять же все написано. чего я застал, так это суть всех этих технологий и понимаю, что без сервера - никак. диктовка ip по телефону, ограничения на работу когда оба за натом - все попадает под "никак" работу.
Владимир М.
578 повідомлень
#15 років тому
Цитата ("frig"):
Или вы знаете способ открыть соединение на конкретную машину за натом?
я вообще в сетевых технологиях не в зуб ногой... а тада вопрос - а как сервер через который идет траф коннектится к машине за натом? или он не коннектится? а как же тогда идет двухсторонний траф? или он не двусторонний а односторонний - от занатченой машины идет запросы на сервер? но ответы то куда идут? на сервер локалки? ну огда етому серверу локалки а напрямую слать пакеты ему не получится от моей машины к той, как будто это ответы на те запросы?
Игорь Цапко
5 повідомлень
#15 років тому
Насчет организации связи - как раз сейчас работаю над таким проектом, используется SIP, позволяет и звук, и видео передавать. Без сервера тут никак - совсем никак, поскольку есть два основных варианта работы:
1. Связь клиент-клиент. Сервер занимается организацией связи и проксированием RTP трафика (коим является звуковой и видео потоки). Плюс этого варианта в том, что NAT или не NAT - не важно, каждый клиент устанавливает связь с сервером и в рамках этой NAT-сессии происходит весь обмен данными между клиентом и сервером, так и минусы, например тот, что на сервер ложится большая нагрузка и соответственно бесплатным сервером с минимумом ресурсов тут не обойтись. В качестве сервера можно использовать кучу продуктов (платные, бесплатные), например Asterisk, freeSwitch, CommuniGate Pro. Именно по такой схеме работает небезызвестный сервис SIPNET.RU, тлько у них связь осуществляется с конкретным пользователем, а в вашем случае будет со случайным. Для работы требуются софт-телефоны (например x-lite).
2. Связь клиент-сервер, т.е. с одной стороны стоит сервер, с другой - не важно что. В этом случае ваш сервер (который в интернете) обеспечивает организацию связи и передает серверу с клиентской стороны параметры соединения, такие как IP абонента и порты, по которым будет идти RTP. Ну и идентификатор сессии. Но этот вариант вам точно не подойдет.

Можно придумать еще третий вариант - такой что у вас на странице реализована веб-версия SIP-телефона, так что пользователи заходят на страницу, подключаются под случайным логоном и связываются со случайным абонентом. Но тут надо копать в сторону веб-ориентированых SIP-телефонов, я думаю это можно написать в крайнем случае, поскольку SIP-протокол является стандартным и более-менее хорошо описан в документации.
Роман Беляев
16382 повідомлення
#15 років тому
Цитата ("vladmax"):
а как сервер через который идет траф коннектится к машине за натом? или он не коннектится? а как же тогда идет двухсторонний траф?


да, трафик идет в две стороны, но инициировать соединение можно только из-за ната. когда машина из-за ната открывает соединение на какой-то адрес в сети (адрес и порт) пакетик отсылается на маршрутизатор с натом, тот запоминает с какого адреса и порта во внутренней сети пришел пакет, отсылает его со своего адреса и порта на сервер, когда сервер присылает ответ - смотрит кому надо с этого внешнего порта переслать. Это грубо так, спонтанно. Смысл в том, что начинать должен тот, кто за натом. Иначе на маршрутизаторе просто нет данных кому во внутренней сети пересылать пакет.
Владимир М.
578 повідомлень
#15 років тому
Цитата ("frig"):
frig
понял. ок.