Open Realtime.

Ignite Realtime is the community site for the users and developers of Jive Software's open source Real Time Communications projects. Your involvement is helping to change the open RTC landscape.

Open Realtime.

Ignite Realtime is the community site for the users and developers of Jive Software's open source Real Time Communications projects. Your involvement is helping to change the open RTC landscape.
Latest Blog Entries
dele
0

Candy plugin for Openfire

The ignite realtime community is happy to announce a plugin for the popular Candy (Chats Are Not Dead Yet) group-chat web client. Candy was developed by Michael Weibel (@weibelm) and Patrick Stadler (@pstadler) on behalf of their employer Amiado Group. It provides group and private chat for collaborative working between teams.

 

The Candy plugin for Openfire adds audo-conferencing and a telephone voicebridge service to Candy. In practice, it means a user can join a group-chat with voice using their PC mic/speaker or their SIP Phone. If the optional  PSTN/PBX gateway is configured, then an external mobile phone or home telephone can be used. The voice bridge can call the destination or accept an incoming call. The audio bridge is based on the jVoiceBridge project and can handle hundreds of concurrent users across multiple conferences,

 

The Candy web client has been extended by a voicebridge plugin which activates/deactivates either RTMP Flash or SIP audio-conferencing when user clicks on the  group-chat room/conference tab. Both group-chat and private chats are supported. It uses the XMPP Openlink XEP to handle the telephone messages

 

For more details read the rest of the overview document at http://community.igniterealtime.org/docs/DOC-2287 and visit the project web site at http://code.google.com/p/openfire-candy/

Tags: bosh , sip , websockets , rtmp , candy 0
dele
3

Jitsi-Jingle and Openfire-Ringo

This is a short notice of two new projects I am initiating and inviting members to be involved with.

Jitsi-Jingle

There has been an outstanding request to bring the Jingle implementation of Spark/Openfire up-to-date and compatible with newer implementations from NimBuzz, Gtalk and Jitsi. Openfire has a Jingle-Nodes plugin which replaces the legacy Openfire media proxy, but it is ignored by Spark.

 

The ideal and proper way of doing this would be to update the Smack Jingle library (smackx-jingle), but it seems to be abandoned and would require some effort to study the code and appreciable time to implement the changes. The other option is to hack a working and actively maintained implementation based on Smack like Jitsi. As I have an immediate need for a Java-based Jingle library, I have opted for the second option.

 

The project is hosted here. If you are interested and can afford to be involved, please send me a private message

 

Openfire-Ringo

Once upon a time I used to code server-side JavaScript in the Netscape and IIS and all that changed with managed code, frameworks and templating using J2EE or .Net. As usual, life goes on in repeating cycles and JavaScript is now the rage and back in fashion thanks to NodeJs and Google's very fast V8 JavaScript engine. I recently caught up with RingoJs which is a ComonJs framework implementation of Mozilla'a Rhino JavaScript engine. Rhino imay not be as fast as NodeJs, but because it uses Jetty 7.5, it will enables us to provide Openfire with its own server-side scripting engine.

 

So what can we do with Openfire-Ringo?

 

Quite a lot. Just imagine JavaScript plugins for Openfire that can be managed directly from the admin web console and having privilege access to the Openfire server-side API and plugins. They can be used to extend Openfire like regular Java plugins and expose the business and enterprise features of an XMPP server like Openfire to a new generation of jQuery developers.

 

The project is hosted here. If you are interested and can afford to be involved, please send me a private message

 

Update

Got first working version of OpenfireJS running. I am quite please with the results.

 

Here is a working example of using Openfire Message Interceptor to intecept every message in Openfire and print the packet to the info log file from JavaScript. The script will continue to run until Openfire is shutdown or the script is deleted.

 

var log = Packages.org.jivesoftware.util.Log;

var interceptorMgr = Packages.org.jivesoftware.openfire.interceptor.InterceptorManager;

var interceptor =  { interceptPacket: function (packet, session, incoming, processed)

{

          if (processed) log.info(packet);

} }

 

var myInterceptor = new org.jivesoftware.openfire.interceptor.PacketInterceptor(interceptor);

interceptorMgr.getInstance().addInterceptor(myInterceptor);


 

To give it a spin, head to the project home page. You will need Openfire 3.7.2 with jetty 7.5.  Not tested on on any lower version

Tags: 3
dele
9

Jingle WebRTC Transport Update

I have a just added WebRTC audio/video support to OfChat to confirm that the proposed WebRTC transport for Jingle actually works.

 

Image2.jpg

OfChat is a web client for Openfire implemented as a Chrome extension. I am not releasing the WebRTC code until the the next release of Chrome which will use JSEP instead of ROAP.

 

UPDATE

 

I have attached the latest OfChat Chrome extension (ver 0.0.8) with support for WebRTC using the Jingle WebRTC Transport proposal. Sadly, the proposal is to be withdrawn, so this might be incompatible with anything else in a few months time. See posting below for requirements. It is all in HTML and JavaScript, so finds where Chrome installs it to see source code.

Tags: openfire , jingle , webrtc , ofchat 9
dele
0

Jingle WebRTC Transport Proto

Jingle [1] defines a framework for negotiating and managing out-of-band multimedia sessions over XMPP. In order to provide a flexible framework, the base Jingle specification omits data transport methods and media session types, requiring separate specifications. Typical peer-to-peer session types include voice chat (see Jingle Audio Content Description Format [2]) and video chat (see Jingle Video Content Description Format [3]) which are based on the Real-time Transport Protocol (RTP) and will be suitable for WebRTC.

 

WebRTC uses a protocol called JavaScript Session Establishment Protocol (JSEP) [4] that pulls the media negotiation and signaling state machine out of the browser into JavaScript. JSEP like Jingle separates session descriptions from transports and exposes the media negotiation to the application developer making it very compatible with Jingle,.

 

In order to use WebRTC with the Jingle RTP-ICE Transport Method [5] requires the developer to translate between the web browser session descriptions and Jingle. This means understanding WebRTC SDP and correct translation into Jingle by the call initiator and back into SDP by the call target. The developer must also create correct RTP-ICE transport candidates at both call ends.

 

When both paticipants of an audio/video call are both web browsers supporting WebRTC,  we already know that the web browsers will transport the media between each other, so it makes for a simpler and neater approach to simply forward the session description messages emitted from the web browser as Jingle session info payload messages instead of translating web browser SDP offer/answer media data into Jingle session descriptions and constructing redundant transport candidates.

 

This document defines a new Jingle transport method for establishing and managing WebRTC media streams.

 

For the full proposed specification, please go here

Tags: jingle , webrtc , rtcweb , roap , jsep 0
dele
10

WebRTC, WebSockets and Openfire

For those who are following, WebRTC is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs and is now available for Chrome.

 

A while ago, I implemented a Websocket plugin for Openfire that uses Jetty 7.5. Work is already under way by community member Pat Santora to make it a core plugin for Openfire.

 

WebRTC with WebSockets when fully functional, will enable audio and video conferencing from a web browser without the need for a browser plugin like Flash and even a media server like Red5. The media connection will be peer to peer directly between browsers and the signaling can be SIP, Jingle or whatever over a WebSocket connection or HTTPRequest.

 

To see how WebRTC compares to Flash Player with RTMFP, I created a simple web page demo using the WebSockets plugin for Openfire and JavaScript and tested with the latest Chrome Canary 19.0.1041.

 

Image2.jpg

 

Performance is good, but it is still early days as the WebRTC specification is still evolving. There are active debates on signaling, device capability discovery and where to hide the the complex code; JavaScript libraries or the Browser. For those who want to see what's under the hood, I have attached the single web page. Run two instances from two different PCs. Change the JavaScript to suit your own Openfire server.

 

I think I have enough to get started on adding two-way Jingle Audio/Video to the OfChat web client using a WebRTC compatible transport.

Tags: xmpp , openfire , jingle , sip , websockets , webrtc , ofchat 10
Openfire 3.7.1
Spark 2.6.3
SparkWeb 0.9.0
Smack API 3.2.2
Tinder API 1.2.2
Whack API 1.0.0
XIFF API 3.0.0
Downloads 13,847,577
Members 16295
Forum Posts 126493
Blog Entries 163

Jive Software's Openfire instant messaging product is one of the easiest software packages I've ever installed because there's zero learning curve. The Openfire software can be installed in less than five minutes, or if you go out for coffee, in 15 minutes.

– Adam Reiser, Cheese Technologist & Co-founder of Pizza.Net