Socket.io + PhoneGap

You have to add the socketio host to the “ExternalHosts” key in PhoneGap.plist.

See Faq:

Q. Links to and imported files from external hosts don’t load?

A. The latest code has the new white-list feature. If you are referencing external hosts,
you will have to add the host in PhoneGap.plist under the “ExternalHosts” key. Wildcards are ok.
So if you are connecting to “http://phonegap.com“, you have to add “phonegap.com” to the list (or use the wildcard “*.phonegap.com”
which will match subdomains as well). (Note: If you open the plist
file in Xcode, you won’t need to fiddle with the XML syntax.)

For android you have to edit cordova.xml and add access to the socketio host:

<access origin="HOST*"/> 

index.html (with socketio example):

...
<script src="https://stackoverflow.com/questions/10738073/HOST/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect('HOST');
    socket.on('news', function (data) {
        socket.emit('my other event', { my: 'data' });
    });
</script>
...

app.js (server side javascript / basic socketio example):

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {

socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log(data);
    });
});

The HOST you have to replace with hostname of your socket.io server!

Leave a Comment