Мой OpenSource проект — croom - вебморда к xmpp конференциям
http://chat.mymcomm.net/#[email protected]
Как многие уже знают, однажды я нашёл прикольную морду к XMPP-конференциям - Speeqe. И начал везде её пиарить. Но у неё есть две больших проблемы:
Я долго хотел сделать велосипед, лишённый этихпедалей недостатков и наконец решился. Устав от унылого проекта на работе я таки выкатил нечто, входящее в конфы и даже не вызывающее желание взять и ... поставить гаджим.
Основными критериями было:
Ручной труд я страшно нелюблю, поэтому для интерфейса взял ExtJS (уже Sencha), jQuery для работы с XML и StropheJS для XMPP BOSH транспорта. Нечто подобное я использую и в своём рабочем проекте. Проект лежит в bzr-репозитории на Launchpad. Собственно практически весь код доступен через view page source и он довольно прост.
Состояние записывается в localStorage браузера (это типа кукисов, но намного мощнее), а для совсем танкованых браузеров (и для выдачи ссылок на комнаты) - в урл после #. Тоесть получается, что даже простой nginx должен это раздавать. XMPP BOSH требует проксирования урла чтобы браузер смог делать запросы к жабер-серверу, поэтому совсем на тупостатике на бесплатном хостинге выкатить пока не получится.
Изначально я сделал вебморду как надстройку над джанго-проектом для захода по ссылкам, восстановления состояния и всего такого. Но так и не использовал, обойдясь голым JS, пусть и современным. По-хорошему, надо отделить движок MUC, обшивку интерфейса (контейнер для комнаты) и серверный бэкенд. В принципе, можно на той же джанге сделать регистрацию и на её юзеров завязать внешнюю авторизацию жабер-сервера. Ну и там ещё фичи типа пре-бинд сессий и пр.
В будущем хотелось бы иметь embedded режим для встраивания в свои сайтики с автологином и автозаходом куда надо. Это не сложно, но надо делать. Как минимум - надо ещё доделать список присутствующих, но я уже уполз обратно в работу.
Если кто хочет поучаствовать или просто интересуется деталями - пишите. Патч - лучшая критика (;
upd: Открыл полноценный проект на https://launchpad.net/croom. Баги, вопросы и код можно кидать туда. Подписывайтесь на ленты.
Как многие уже знают, однажды я нашёл прикольную морду к XMPP-конференциям - Speeqe. И начал везде её пиарить. Но у неё есть две больших проблемы:
- президенты - любой вошедший по ссылке человек будет иметь ник ИмяПрезидентаСША123456. Это ужасно - надо знать команду из IRC /nick и надо это делать каждый раз при входе. Регистрация помогает, но это (о ужас!) надо регистрироваться. У себя на хосте я прикрутил OpenID, SSO и много других слов и саму систему это отнюдь не упростило.
- движок на питоне. Несмотря на то, что прекрасная библиотека Strophe может работать на голом nginx, Speeqe хочет свой сервер, питон, джангу и всё такое. При чём хочет совершенно необосновано.
Я долго хотел сделать велосипед, лишённый этих
Основными критериями было:
- возможность дать ссылку на комнату
- сначала спросить ник, потом входить
- восстанавливать ник и комнаты при заходе, например, с закладки
- ... и чтобы при этом не тоормозиллоо
Ручной труд я страшно нелюблю, поэтому для интерфейса взял ExtJS (уже Sencha), jQuery для работы с XML и StropheJS для XMPP BOSH транспорта. Нечто подобное я использую и в своём рабочем проекте. Проект лежит в bzr-репозитории на Launchpad. Собственно практически весь код доступен через view page source и он довольно прост.
Состояние записывается в localStorage браузера (это типа кукисов, но намного мощнее), а для совсем танкованых браузеров (и для выдачи ссылок на комнаты) - в урл после #. Тоесть получается, что даже простой nginx должен это раздавать. XMPP BOSH требует проксирования урла чтобы браузер смог делать запросы к жабер-серверу, поэтому совсем на тупостатике на бесплатном хостинге выкатить пока не получится.
Изначально я сделал вебморду как надстройку над джанго-проектом для захода по ссылкам, восстановления состояния и всего такого. Но так и не использовал, обойдясь голым JS, пусть и современным. По-хорошему, надо отделить движок MUC, обшивку интерфейса (контейнер для комнаты) и серверный бэкенд. В принципе, можно на той же джанге сделать регистрацию и на её юзеров завязать внешнюю авторизацию жабер-сервера. Ну и там ещё фичи типа пре-бинд сессий и пр.
В будущем хотелось бы иметь embedded режим для встраивания в свои сайтики с автологином и автозаходом куда надо. Это не сложно, но надо делать. Как минимум - надо ещё доделать список присутствующих, но я уже уполз обратно в работу.
Если кто хочет поучаствовать или просто интересуется деталями - пишите. Патч - лучшая критика (;
upd: Открыл полноценный проект на https://launchpad.net/croom. Баги, вопросы и код можно кидать туда. Подписывайтесь на ленты.