Create web messenger service - xmpp

Am wondering if anyone can suggest the right technology required to create a web-messenger service similar to Meebo i.e. it should be able to connect to various services like Facebook, Gtalk etc. I know they are all Jabber compatible. Am wondering if anyone can suggest a technology that is required to connect to these servers? Also, is there an API or a service available instead of re-writing the wheel?

What about Google AppEngine?
With the introduction of the XMPP
service to App Engine, it's now
possible to write an App Engine app
that communicates with users - or even
other applications - over XMPP,
otherwise known as Jabber or Google
Talk.

Related

Socket connection between rails and iphone native app

I have an iphone app with rails serving as a backend server.
Now I need to implement a chat functionality using sockets connections.
A lot of examples show you how to implement chat using sockets in browser.
What I need here is how I can implement an application where you create socket server in the rails app , and the client in iphone app which listens to the channel I give them.
I tried using faye(examples given only how to implement client in the browser) and using fayeObjC library for iphone to create client, but am not able to listen to the channel from this library.I know I must be implementing it wrong here.
I'll share my code also here, but first I need to know is there a better solution than this?
Also I appreciate some links to some examples where socket server is in rails and clients are iphone app.
Appreciate any help and mostly need a right direction to implement it.
Update
I tried the faye combination again and it worked.Although still looking for more solutions.
You can check about TCP sockets:
http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
Chat Application Using Ruby
http://quickblox.com/modules/chat/
http://caydenliew.com/2011/11/ios-mac-os-communication-with-asyncsocket/
http://www.macresearch.org/cocoa-scientists-part-xxix-message
Next link is a comprehensive Networking Guide - Using Internet Sockets
You must keep in mind two major problems to peer-to-peer communications (Chat): reachability and how to receive new messages while your application is in the background (get notifications).
For the last you can use APNS approach: an invisible notification will be pushed to the iPhone indicating that a new message is ready to be read. So your app will make a request for unread messages (what app like WhatsApp does).
Besides TCP sockets you could use websockets (HTTP - so there are no firewall problems).
Best in class - Socket.IO.
Here you will find the wiki https://github.com/learnboost/socket.io/wiki (you will find there an extension for Ruby also)
Here an example for iOS chat client for socket.io & node.js backend
Jabber
Another option: XMPP - "stands for eXtensible Messaging and Presence Protocol. Such a protocol is open-standard and oriented to message exchange (builds and maintains by Jabber community). Message exchange happens near real time, so it is an ideal infrastructure to build chat-like applications. The protocol also implements a mechanism to notify presence information (whether a user is online or not) and the maintenance of a contact list. XMPP is a thorough protocol, which has been adopted also by big companies like Google to build their Instant Messaging service."
Here you will find all about developing a Jabber Client for iOS (enable users to sign in, add buddies, and send messages; how to install and configure a jabber server, create accounts, and interact with the server from an iOS application http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/
I know that SocketRocket by square is a strong native Objective-C library. But it doesn't offer the channel abstraction you seem to be looking for.
If you would consider outsourcing the WebSocket connections then you could use a hosted service like Pusher, who I work for. You can publish messages (trigger events) on channels using the pusher-gem. And you can subscribe to channels and receive messages using one of Pusher's Objective-C libraries.
Other solutions will also have Objective-C libraries and you can find a list of them via this realtime web tech guide.

AJAX chat client for Cisco WebEx Connect

I'm working on creating a chat client that is supposed to interface with Cisco's WebEx Connect IM. I'm using Cisco's CAXL library and I got it to work with gchat, which seemed a reasonable XMPP start-point. However, now I'm totally stuck. What services do I need to register for at Cisco to get access to a BOSH / XMPP endpoint that I can use with the chat client? How would I go about this? The project has an unlimited budget but I can't figure out what to buy -- totally unfamiliar with Cisco's enterprise jungle.
I've contacted WebEx support but no response yet. We don't have a real account with them yet so support seems hard to come by.
Thanks for any direction! ~Charlie
The right path to get support for CAXL is to go to the Cisco Developer Network (CDN), then click on Develop with Jabber, Develop and Test, Get Started - Hosted Deployment. At the top, there's a link for community support and to contact the CDN team, which has escalation paths that... end back up with me. :)
You just need an account on WebEx Connect to move forward.

iOS Device communication

I am keen to get some apps built that can communicate with other devices/ web etc. i have played around with FTP and can get so far. But what is the best way to do this? We don't have any Servers with databases etc, but do have a site that we are currently uploading and downloading files to.
can anyone suggest a good/ better way to get the device to send/ receive files?
thanks
sam
If it's HTTP communication you're wanting to do, the simplest and most powerful tool is ASIHTTPRequest.
HTTP is the protocol your web browser uses to talk to web servers. If you have a site you're storing and downloading files at, it's almost certainly HTTP you're talking to it.
For iOS device to device communication one can use Bump API.
EDIT: I don't know of a generic framework for device <-> server communications, but having built applications that use web services of other providers like Yelp, Yahoo, Google Maps, I would say the way to go for this is to have REST based web services which exchange data in JSON format.

Do most iPhone apps communicate via web services?

Do most of the popular iPhone apps that communicate with a back end Internet server communicate via web services? I was assuming this was the case.
Some apps I'm thinking about would be: Facebook, Bloomberg, NY Times, ESPN, etc.
Well a web service is just an API - Application Programming Interface
The apps you mentioned would probably all implement their own API for exchanging data between the client and the server so yeah, I would say the answer is yes. You can implement your own API via XML, JSON etc. You just need to define the protocol. You can implement existing concepts in your own apps. Have a look at the following:
REST
SOAP
JSON
Most of the Apps that I've written use web services of some sort, I prefer being RESTful, but I have been forced to use SOAP.

bidirectional google wave jabber gateway for google talk or ichat

I've understood that Google Wave is built around the XMPP platform, as such I was thinking that it should be possible to access it with a jabber client like ichat or google talk. The advantage is that it's a lot faster to answer or read specific waves then going through a javascript jit in a browser.
Now you can add the xmpplite bot http://wave-xmpp.appspot.com/public/xmpplite.htm
but that is gwave -> xmpp only. It would be nice if one could also post to the wave with a jabber or e-mail client. Does anyone know a bot or a method of doing so?
The wave federation protocol is based on XMPP, but XMPP/BOSH isn't used for client-server communication, so it's not possible directly yet. However, since Google App Engine's XMPP service is bidirectional, there really isn't anything stopping the development of a robot which can be gwave <-> xmpp.