Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 900
Anidhya Ahuja Avatar asked Feb 01 '13 11:02

Anidhya Ahuja


1 Answers

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/

like image 79
TonyMkenu Avatar answered Nov 04 '22 06:11

TonyMkenu