The main objective is to develop the technology and sample
implementations for web applications that include real-time voice
communications. The project aims for web communication widgets to become
as common on web pages as other components such as layout, buttons,
text fields, images and multimedia players. Our relevant paper on SIP APIs for voice and video communications on the web (slides) was presented at IPTcomm 2011.
Most Internet applications use HTTP as the only application protocol. At the same time, global voice communications, both fixed and mobile use VoIP based on SIP standards for interoperability, but have not produced any significant web applications other than emulating legacy telephony services. In reality, only two protocols are required for web communications: HTTP for signaling and control, and UDP for real-time media transport. All other application specific functionality can reside in the application itself; in the user client and/or in a web server.
Part 1 (week 1): Initial Reading
Part 2 (week 2-3): Software Design
As mentioned before, the web server facilitates signaling for real-time communication using HTTP and asynchronous primitives. Several options exist for asynchronous communication on web, e.g., Comet, BOSH, and more recently server-events and websocket extensions of HTML5. We will use existing technologies as much as possible. A major role of web server in this project includes signaling for communication. In future we will enable interworking between web browser and traditional VoIP clients using such web server as gateway. Hence the client-server communication API should include sufficient information to allow translation to SIP call signaling and to enable end-to-end media path.
Apache web server is very popular and developer friendly. We will use Apache web server with server side programming as much as possible. The modular design allows extending the server if needed. We feel that most of the server side functions can be done using application programming itself without having to write a server extension.
Part 3 (week 4-5): Signaling Service
End-to-end media path is established using the separate application running on user's host computer. The separate application receives commands from the client application running in the web browser and uses ICE-like process to establish end-to-end media path. Several existing SIP applications and libraries include ICE functions which can be reused in this project, e.g., pjsip includes pjnath. In future, this will get replaced with implementation of host identity protocol (HIP). This project focuses on only UDP for media transport, and TCP transport or HTTP tunneling is for future work.
While the separate application can be implemented in any programming language, in post-standard future we will need to merge it with the browser implementation. Hence C/C++ is the preferred programming language for implementing the separate application.
Second constraint on the separate application is that the API should be accessible from web applications hence should use HTTP as much as possible. It may use RTMP for media transport between the Flash Player and separate application if a Flash application is used to facilitate media capture and display, but this is orthogonal to the core API.
The separate application should authenticate all client connections directly by asking the end user. It should also ask permission from the end user before initiating or accepting media connection with another browser instance.
Part 4 (week 6-8): End-to-End Media Path
When a widget is loaded in the browser, it should first detect whether appropriate version of the separate application is running on host computer or not. If needed, it should prompt the user to install a particular version of the separate application.
The two-party communication widget should have developer API to login and logout, and to initiate, receive, accept or reject calls. It should also have API to control device parameters such as microphone mute state, speaker volume, etc.
Part 5 (week 9-11): Client Widget and Web Application
One factor that defines the success of any web application is how easy it is to use. Our project includes a separate application that must be installed by the end user. To provide a seamless and immersive web experience, the installation of this separate application should be as easy as possible. Secondly, for a third-party web site to use this project, some server side component needs to be installed as well.
Part 6 (week 12-13): Application Installer
Documentation and demonstration of this project are crucial grading components. Unlike homework assignments, this project requires high quality software engineering practice because there will be more/different students working on or extending it in future. For a successful project, you should provide the following deliverables.