How to send handshake cookies socket.io (sails.js)?

I am trying to use the following code (extracted from this meaning ):

var io = require('socket.io-client');
var request = require('request');
var xhr = require('socket.io-client/node_modules/xmlhttprequest');
var xhrOriginal = require('xmlhttprequest');

var myUrl = 'http://192.168.56.101:1337';
var cookieJar = request.jar();

// From socket.io-client module 'xmlhttprequest', rewrie its XMLHttpRequest function.
xhr.XMLHttpRequest = function() {
    this.XMLHttpRequest = xhrOriginal.XMLHttpRequest;
    xhrOriginal.XMLHttpRequest.apply(this, arguments);
    this.setDisableHeaderCheck(true); // Allow header modifications.

    // Rewrite the 'open' function.
    var openOriginal = this.open;
    this.open = function(method, url, async, user, password) {
        openOriginal.apply(this, arguments);
        var header = cookieJar.get({url: myUrl}).map(function(cookie) {
            return cookie.name + '=' + cookie.value;
        }).join('; ');
        this.setRequestHeader('cookie', header);
    };
};

// Send the cookie first before attempting to connect via socket-io,
// thus, avoiding the handshake error.
request.post({jar: cookieJar, url: myUrl}, function(err, resp, body) {
    var socket = io.connect(myUrl);
    socket.on('connecting', function() {
        console.log('(II) Connecting to server');
    });
    socket.on('connect', function() {
        console.log('(II) Successfully connected to server');
    });
    socket.on('error', function(reason) {
        console.log('(EE) Error connecting to server: ' + reason);
    });
    socket.on('disconnect', function(reason) {
        console.log('(II) Disconnected from server\n');
    });
});

To achieve a simpler handshake process with socket.io/sails.js, but I can't get it to work.

Can someone explain to you how to use it correctly? Is it intended to run in the client as an imported script in some way? or how is the page served?

Thanks in advance.

+3
source share

All Articles