Skip to content

Instantly share code, notes, and snippets.

@itayher
Last active May 23, 2016 20:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itayher/b6a867dafc1cf3f077a5838ad0b9e299 to your computer and use it in GitHub Desktop.
Save itayher/b6a867dafc1cf3f077a5838ad0b9e299 to your computer and use it in GitHub Desktop.

In order to have socket works for Backand in Angular 1.x (without Backand's SDK) do the follow:

Add this line to index.html:

  <script src="https://api.backand.com:4000/socket.io/socket.io.js"></script>

Use this service 'SocketService' for the main socket functionality:

(function () {
  'use strict';

  angular.module('common.services')
    .service('SocketService', ['Backand','$rootScope', SocketService]);

  function SocketService(Backand, $rootScope) {

    var self = this;

    self.socket = {on: function(){}};

    self.login = function(appName){
      var url = 'https://api.backand.com:4000';
      var token = 'bearer ' + Backand.getToken();

      try{
        self.socket = io.connect(url, {'forceNew':true });

        self.socket.on('connect', function(){
          console.log('connected');
          self.socket.emit("login", token, '', appName);
        });

        self.socket.on('disconnect', function() {
          console.log('disconnect');
        });

        self.socket.on('reconnecting', function() {
          console.log('reconnecting');
        });
      }
      catch(e){
        console.error("error loading socket: ", e)
      }
    };

    self.on = function (eventName, callback) {
      self.socket.on(eventName, function () {
        var args = arguments;
        $rootScope.$apply(function () {
          callback.apply(self.socket, args);
        });
      });
    };

    self.emit = function (eventName, data, callback) {
      self.socket.emit(eventName, data, function () {
        var args = arguments;
        $rootScope.$apply(function () {
          if (callback) {
            callback.apply(self.socket, args);
          }
        });
      })
    }

  }

})();

After login to the app or when page is loaded make this call:

  SocketService.login(appName);

To listen to the server side emit, use this code:

SocketService.on('Your Event', function (data) {
  //your code
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment