Здравейте.
От известно време една идея ми бръмчи в главата и забелязвам, че не само в моята, но и в други глави бръмчи (макар и малко по-различна).
Става въпрос за VoIP & video transfer в IRC. Митака тук беше споделил идеята си за нов IRC клиент, който е ICQ/Skype-подобен и с подръжка на VoIP/video transfer, но честно казано идеята не ми харесва по две причини:
- изисква астериск сървър(и), който(които) просто няма къде да се пусне
- става въпрос за нов IRC клиент, който не само, че ще отнеме много човеко-часа писане, но и няма да се използва. IRC потребителите до голяма степен са свикнали с добре познатия ни mIRC и едва ли ще го заменят за нещо което прилича на Skype или ако ще го заменят директно ще си ползват Skype..
И докато говорим за нов IRC клиент аз ще продължа да бъде сигурен, че mIRC е най-добрият IRC клиент. Просто защото mIRC е най-customizable. Тук моля почитателите и потребителите на други IRC клиенти (X-Chat, irssi, bitchX и др.) да не се впускат в спорове с мен на тема "Кой е най-добрият IRC клиент и има ли той почва у нас?". Дори и да греша и mIRC да не е най-добрият IRC клиент, то той винаги ще си остане най-масовият, което обезсмисля спора.
Една от лошите страни на mIRC е, че не е open-source, което до някъде връзва ръцете на програмистите, които се опитват да напишат някакви подобрения. Но, хубавото на mIRC е, че работи с динамични библиотеки (DLLs).
Накратко, моята идея е да се напише модул, който осъществява VoIP & video transfer, като този модул ще бъде под формата на динамична библиотека за mIRC. Свързването ще бъде peer2peer, от което следва, че няма нужда от допълнителни сървъри. При стартирането на audio/video chat, Потребител1 ще се опита да се свърже директно с Потребител2. Ако Потребител2 няма реален IP адрес или по някаква друга причина връзката не може да се осъществи (например защитна стена), то модулът ще опита свързване в обратната посока Потребител2->Потребител1. Ако и този начин на свързване се провали, просто клиентите няма да могат да ползват услугата. Когато един клиент се свърже с друг на практика ще имаме client-server връзка. След като бъде осъществена тази връзка, към server-а ще могат да се закачат и други клиенти за да се получи конферентна връзка, но само за audio (поне не се сещам как би могло да стане и за video).
Свързването и предаването на audio/video сигнала ще се осъществява от динамичната библиотека, която ще бъде извикана в mIRC. Също така ще се създаде нов прозорец, в който ще има някакви настройки за audio/video сигнала, тип на свързване, портове (и т.н.) и прозорче с видео кадрите които се получават и които се изпращат. Като този прозорец ще бъде част от mIRC-а, но ще може да се deattach-ва извън mIRC. Deattach-натия прозорец ще има опция "always on top". В същият този прозорец ще могат да се accept-ват или reject-ват requests за нормална или конферентна връзка.
Също така, можем да почерпим доста идеи от начина на работа на Skype (случайни портове, криптиране на връзката, audio/video протоколи и т.н.)
Всичко, предполагам, звучи много добре на думи, но трябва и да се напише. Освен динамичната библиотека ще трябва и солиден mIRC scripting, който да работи с тази библиотека (предимно подаване на events към библиотеката и приемането им).
Ако има желаещи доброволци, които искат да се включат в начинанието, тази е темата, в която могат да кажат.
Ако някой има нужда от повече информация преди да реши дали се включи, отново това е темата. Питайте смело.
Прилагам и кратко ръководство за писане на mIRC DLLs и тяхното използване.
Натисни да отвориш файла
Best regards.
