iOS App XMPP chat server requirements - iphone

We are planning to start a new iPhone chat app using XMPP. We didn't have any online VPS server now. We have a local server, on that openfire & XMPP is alredy installed. (We are using it for our local network chat on computers)
So my doubt is that can I start working on the iOS app with that local server now and later (after completing the app) is it possible to change to the online VPS server or need to start with online VPS server ?
Thanks in advance.

Its possible.
I started to develop the app on the local server by setting the xmppStrem hostName as the local server IP address.

Related

Is XMPP good choice for this solution?

I want to build communication solution for my project. Thinking about not to develop everything from scratch, but to use XMPP servers.
My project consist of many "mini-servers" (based on raspberry pi) scattered around different locations. Every mini-server should be reachable for mobile applications on its own network, this network could be isolated from internet. Every "mini-server" has to be autonomous and be able to live without internet, autethicate its own mobile client and respond to their requests. So mini-servers could be on private offline networks, could be on known static or unknown dynamic IP addresses behind firewalls.
Some mini-server users want theirs mini-servers to be reachable from the internet. So there is one more, let's call it cloud. This cloud would be responsible for routing request from mobile clients from the internet to their mini-servers.
My idea was to use XMPP server on every mini-server, my application would log in to this server on localhost and create chatroom. Every mobile client would connect to xmpp server and chat with my application request-response. When mini-server owner wants to connect to the interet to be reachable from outside, I would just reconfigure xmpp server to connect to my cloud XMPP cluster (on known public domain) and mobile app to connect to this public cloud server if not on private network. Every mini-server will have its own users, managed by other app on it. Mini-server has also log, this could be written for example to another chatroom. Mini-servers or mobile users does not want to talk to each other. It is pure mobile user to mini-server request-response realtime communication.
Can cloud-XMPP servers route request to mini-server xmpp server?
Is this possible with XMPP? Is it good use? Some better ideas?
What you describe looks like XMPP server-to-server federation, with some local Raspberry PI XMPP domains and some other XMPP servers on the internet.
So, I think yes, what you would like to achieve is doable with XMPP server.
A server like ejabberd works very well on Raspberry Pi.

Application Server and Web Server on Two Different Machines

Today I'm hosting a Laravel v4 web application on a MacMini. Why a Mac? Because I created the application logic in Objective-C (leveraging my experience with iOS dev). Whether or not this was the right choice isn't the point of the question.
What I'm interested in knowing is how can I separate my web and application server. For instance, if I put my web server on Linode (or whatever) how do I go about communicating back and forth between the web server and the application server? Is there some sort of resource I can look to to understand how to do this?
Assumptions
Here's some assumptions I'm making:
I'm guessing Laravel and the Objetive-C Application are part of the same "system" and so I'm just gonna treat this as if you need a web server to send requests to a PHP application.
The Linode server will be a web server which sends request to the PHP application (Laravel)
Hosting PHP Applications
There are three moving parts:
The web server (Apache, Nginx)
The application gateway (PHP-FPM)
The application
The gateway and the code must live on the same computer/server. The web server can live on a separate computer/server.
This means you'll need your Macintosh to run PHP-FPM, which can then listen for remote connects and send them to the PHP application.
Macintosh
Install php-fpm on your mac. Make sure it can listen for remote network connections. This is usually done in the www.conf file in the listen directory, you can listen for connections on the remote network interface (whatever IP address the computer is assigned).
Linode
Install Nginx or Apache and have it proxy FastCGI requests off to your macintosh server at the macintosh's IP address (the one you set up to listen to addresses in the step above).
Firewalls
You may need to ensure the firewalls at both ends allow incoming/outgoing connects on the networks being used to communicate to eachother.

Using VPN in objective C once user is connected to VPN with Anyconnect,F5 BIG-IP Edge

I am exploring the possibility of communicating with server that requires VPN connection outside of corporate network using iOS enabled device. I found out that I can connect to VPN using proprietary apps of Cisco, F5, Juniper etc. Assuming that user has successfully connected to VPN using these apps, can I directly communicate(call web service) from my iOS app? I know that Safari can directly communicate with server requiring VPN connection once user establish connection using one of apps I mentioned.
Thanks,
Jignesh
I'm sure that there could be unique circumstances that cause problems, but in my experience I have found that this works just fine. I have an app that interacts with SOAP services running on servers within our corporate intranet. Once I have established a VPN connection using network-specific clients (I've used both Cisco and Juniper clients) I am able to use NSURLConnection and other iOS API's to connect to those servers.

Find specific server in iPhone

Hi i am developing iPad client server based application. It is required in application that when application starts it searches for specific server. If server found then connect with it and start consuming webservices on that server.
The point is user should not enter IP address of server. Application search servers and connect with specific server. Is there anyway to find server.
Apple has a technology called Bonjour which is designed for this kind of thing.
http://www.apple.com/support/bonjour/
http://my.safaribooksonline.com/book/programming/iphone/9780470918029/bonjour-programming/browsing_for_services
If you want a simpler solution, you could just use a DNS entry with a CNAME or A record pointing to the server.

Remote access to apache2 server

I'm trying to test my iPhone application on the device.
I have a mac computer which stores my development environment.
Right now I can only access PHP files using the http://localhost/PHPFileLocation
which does not work when I try to test my app on real device.
How do I configure apache2 to be accessible from outside?
Is it possible to configure it to a specific IP address?
I want to reach some php scripts located on my development machine running apache2 from my iPhone device.
Thanks
If your computer has a WiFi card then you should be able to attach the iPhone remotely to a ad-hoc Wifi network created on your dev machine.
I'm assuming your Mac is behind a router. You should be able to configure your router to port forward connections to your WAN facing IP address to port 80 (the HTTP port) on your Mac - see http://portforward.com/ for some help.
You may also need to turn the firewall off on your Mac.
Once this is set up correctly you can hit http://yourexternalIP/PHPFileLocation in your iPhone app and this will be directed by your router to the Apache2 server on your Mac. The external IP is normally found on your router's admin page somewhere.