Я нахожусь на этапе планирования/моделирования для разработки решения для совместного использования удаленного рабочего стола, которое должно быть основано на веб-браузере. Другими словами: пользователь сможет видеть чей-то удаленный рабочий стол и взаимодействовать с ним, используя свой веб-браузер.
Все, что нужно пользователю, который хочет поделиться своим рабочим столом, кроме его браузера, это установка надстройки, о которой ему будет предложено при необходимости. Надстройка необходима, поскольку (на самом деле) ни одна технология браузера не позволяет управлять рабочим столом из приложения, работающего только в браузере. Процесс установки надстройки должен быть максимально простым и прозрачным для пользователя (аналог AdobeConnectNow, если кто с ним знаком).
Пользователь может совместно использовать свой рабочий стол с большим количеством людей одновременно, но уступать управление рабочим столом только одному из них одновременно (в противном случае нет смысла).
Требования к проекту:
- Все используемые технологии должны быть совместимы с лицензией с открытым исходным кодом.
- Оба интерфейса будут во флеш-памяти (браузере).
- Должен работать на Linux, Windows XP (и более поздних версиях) и MacOSX.
- Должен работать как минимум с IE7 (и более поздними версиями) и Firefox3.0 (и более поздними версиями).
- По крайней мере, как только поток шарьера попадает на сервер, откуда он будет транслироваться, то он должен транслироваться в flv (вот я и думаю, делать ли кодирование на клиентской машине (той, что делит рабочий стол) или отправить его в другом формате на сервер и закодировать там).
- Важны производительность и масштабируемость: он должен обслуживать сотни десятков пользователей (один пользователь рабочего стола, остальные — зрители).
- Мы определенно будем использовать red5.
Мои сомнения в основном связаны с реализацией настольной версии издателя (надстройка и стример):
1) Знаете ли вы о других проектах, которые я мог бы изучить в поисках идей? (Мне известны bigbluebutton.org и code.google.com/p/openmeetings)
2) Должен ли я использовать VNC?
3) Принимая во внимание необходимость межплатформенной работы, какой язык выбрать? (Моя команда очень много работает с java, и у меня есть некоторые знания C/C++, но на самом деле все пойдет).
4) Приветствуются любые другие советы.