Как мне начать писать веб-приложение, подобное Skype? - PullRequest
5 голосов
/ 26 января 2012

Это для класса программирования, который я беру. Я подхожу к предварительным условиям, что является сильным знанием C ++.

Чтобы уточнить: это не должно быть бэкэнд для настольного приложения. Сайт делает видео чат, отправку файлов, текстовый чат, все в браузере.

Так что у меня нет опыта веб-разработки. Я уже играл с PHP и посмотрел на книгу по JavaScript и чувствую себя комфортно, используя их. Я знаю, что такое MySQL и как настраивать таблицы и прочее.

Что мне нужно сделать в следующие 8 недель:

  • Включите работу видеочата (между двумя людьми)
  • Есть страница входа, у каждого пользователя есть свой профиль и список контактов
  • Текстовый чат (между двумя людьми)
  • Общий доступ к файлам (между двумя людьми)

Я не знаю, что использовать для достижения этой цели. У меня есть некоторые идеи, но я не уверен, что они действительно сработают. Мне разрешено использовать библиотеки, программы, код и т. Д. Для создания этого веб-приложения.

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

Кроме того, пока я гуглил и смотрел, как делать такие вещи, я увидел нечто, называемое CakePHP. Вы предлагаете мне использовать это? Если так, что именно я должен использовать для этого?

Ответы [ 2 ]

7 голосов
/ 26 января 2012

Вам понадобится много кофе!

Skype использует гибридную архитектуру одноранговых и клиент-серверных методов для получения данных.Если это будет выполняться только во внутренней локальной сети, вам не нужно беспокоиться о сервере посередине, и вы можете сосредоточиться на настройке только однорангового соединения.

В реальном миретам, где компьютеры скрыты вашим маршрутизатором чем-то, называемым NAT, Skype использует серверы для входа в систему и настройки открытого порта через NAT.Затем Skype отправляет эту информацию другому партнеру, и оттуда запускается одноранговое соединение.

Во внутренней сети вы можете просто общаться с другими через открытый порт UDP.Skype использует это в отличие от TCP, и большая часть вашего другого общения в Интернете зависит от него.По сути, вы не получаете надежную доставку, и приложения на обоих концах адаптируются к этому.(т. е. ваше видео останавливается на секунду, когда пакеты теряются или уничтожаются)

              SKYPE SERVER
                 /    \
                /      \
               /        \
              /          \
        PEER 1 --------- PEER 2

После того, как вы выясните, как вы будете работать по сети, вам нужно изучить API Windows Image Acquisition, которыйстандартный способ работы с веб-камерой для получения неподвижного изображения.Вы берете достаточно этих снимков подряд и БИНГО!У вас есть простой видеопоток для отправки по сети.

Я предполагаю, что MySQL будет хорошо работать с опубликованным PHP веб-сервисом SOAP для обработки базы данных для входа и контактов ...

ПочемуВы называете это веб-приложением?Будет ли он работать внутри веб-браузера?Это просто сетевое приложение, верно?

Еще один совет ... Программирование на C # или на другом языке .NET может быть полезным, потому что вам доступно гораздо больше элементов управления.Например, есть элемент управления WIA, который легко направит поток видео в ваше приложение.

0 голосов
/ 26 января 2012

Я думаю, что эти ссылки могут быть полезны для вас:

http://www.codeproject.com/aspnet/webcamimage.asp
http://www.planet -source-code.com / VB / скрипты / ShowCode.asp? TxtCodeId = 1339 & lngWId = 10 1008 *
*

Также я предлагаю вам использовать соединение UDP,
и разработайте простейший простейший прото
Например, заголовок 0x01 означает, что следующим будет структура сообщения
0x02, следующим будет структура кадра (потоковое видео) и т. д.

...