# Code coverage report for socket.io-client/lib/index.js

## Statements: 95.83% (23 / 24) Branches: 66.67% (8 / 12) Functions: 100% (1 / 1) Lines: 95.65% (22 / 23) Ignored: none

All files » socket.io-client/lib/ » index.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89

    1
    1
    1

    1

    1

    1
    1

    1
    1
    1

    1

    1
    1
    1

    1

    1
    1
    1

    1

    1

    1
    1

    /**
     * Module dependencies.
     */

    var url = require('./url');
    var parser = require('socket.io-parser');
    var Manager = require('./manager');

    /**
     * Module exports.
     */

    module.exports = exports = lookup;

    /**
     * Managers cache.
     */

    var cache = exports.managers = {};

    /**
     * Looks up an existing `Manager` for multiplexing.
     * If the user summons:
     *
     *   `io('http://localhost/a');`
     *   `io('http://localhost/b');`
     *
     * We reuse the existing instance based on same scheme/port/host,
     * and we initialize sockets for each namespace.
     *
     * @api public
     */

    function lookup(uri, opts){
      opts = opts || {};

      var parsed = url(uri);
      var href = parsed.href;
      var io;

      Iif (opts.forceNew || false === opts.multiplex) {
        io = Manager(href, opts);
      } else {
        var id = parsed.id;
        Eif (!cache[id]) cache[id] = Manager(href, opts);
        io = cache[id];
      }

      return io.socket(parsed.pathname || '/');
    }

    /**
     * Expose standalone client source.
     *
     * @api public
     */

    Eif ('undefined' == typeof window) {
      var read = require('fs').readFileSync;
      exports.source = read(__dirname + '/../socket.io.js');
    }

    /**
     * Protocol version.
     *
     * @api public
     */

    exports.protocol = parser.protocol;

    /**
     * `connect`.
     *
     * @param {String} uri
     * @api public
     */

    exports.connect = lookup;

    /**
     * Expose constructors for standalone build.
     *
     * @api public
     */

    exports.Manager = require('./manager');
    exports.Socket = require('./socket');