• 2 min read

How to Use Socket.IO with Azure Mobile Service Node Backend

This article shows you how to use socket.io to do realtime communication with your Azure Mobile Service Node backend.

With Azure Mobile Service .NET backend you can do realtime communication using SignalR however such an option was not available for our node backend customers. With the latest update of Azure Mobile Service node backend, we’ve made it easy for you to hookup socket.io with your Mobile Service.


First of all clone your Mobile Service git repository locally like so:

C:> git clone 

Then change your directory to ‘service’ folder and install ‘socket.io’ module

cd nodetestappservice
npm install socket.io --save

Note: To avoid pushing the node_modules folder in your remote repository, you have to add the .gitignore file. See Support for package.json in Azure Mobile Services for details.

Now change your directory to ‘extensions’ folder and create a file called ‘startup.js’ with following contents:

var path = require('path');

exports.startup = function (context, done) {
	var io = require('socket.io')(context.app.server);
	io.on('connection', function(socket){
	  socket.on('chat message', function(msg){
		io.emit('chat message', msg);

       context.app.get('/public/chat.html', function(req, res) {
		res.sendfile(path.resolve(__dirname, '../public/chat.html'));

In the snippet above we configured socket.io and added a route to host our chat app.

Chat app

Create a new file ‘chat.html’ and put it in a new folder called ‘public’ inside the ‘service’ folder with following html:

    Socket.IO chat

    Finally commit all your changes and push them up to your Mobile Service using add, commit and push commands of git.

    Then visit and you’ll see a page that shows you a text box and a button at the bottom. Open two instances of this page in the browser. Type a message and press enter. You’ll see the message in the other window too.

    Scale out

    The above sample works only when you have a single instance of your Mobile Service. If you have multiple instances then you’ll need to use redis as a backing store for your realtime communication along with socket.io. For that you can install the socket.io-redis node module from npm


    And you can configure it to work against your redis instance in Azure. See the following article for details: