0

Trying to use socketcluster to exchange events between browser windows.

On the sender side I have :

var options = {
      hostname: "myserver.com",
      secure: true,
      port: 443,
      connectTimeout: 86400000,
      autoReconnectOptions: {
                  initialDelay: 100, //milliseconds
                  randomness: 10, //milliseconds
                  multiplier: 1.5, //decimal
                  maxDelay: 60000 //milliseconds
              }
     };

// Initiate the connection to the server
var socket = socketCluster.connect(options);
    socket.on('connect', function () {
              console.log('CONNECTED');
                });

function sendTime() {
    var currentDate = new Date();
    var theId = document.getElementById("object_id").value;
    count++;
    console.log("id "+theId);
    socket.emit('identity1', { timestamp: currentDate, id: theId, counter:count});
}

Then on the server I have the worker publish a new event :

  socket.on('identity1', function (data) {
    count++;
    console.log('Handled identity1', data);
    scServer.exchange.publish('identity-' + data.id, data);
  });

And on the receiver side I have :

    // Initiate the connection to the server
    var socket = socketCluster.connect(options);
    socket.on('connect', function () {
      console.log('CONNECTED');
      identityChannel = socket.subscribe('identity-' + document.getElementById("object_id").value);
      identityChannel.watch(function (data) {
        var theTime=data.timestamp;
        console.log('ID:' + data.id + ' TIME: ' + theTime);
        document.getElementById("data2").innerHTML = 'TIME: ' + theTime + 'COUNTER : ' + data.counter ;
      });
    });

In the js console of Chrome I see that after 10s on both sides, the client connection is refused like that :

socketcluster.js:678 Uncaught SocketProtocolError {name: "SocketProtocolError", message: "Socket hung up", code: 1006, stack: "SocketProtocolError: Socket hung up↵    at SCSocke…myserver.com/socketcluster.js:1392:10)"}
(anonymous) @ socketcluster.js:678
setTimeout (async)
SCSocket._onSCError @ socketcluster.js:676
SCSocket._onSCClose @ socketcluster.js:781
(anonymous) @ socketcluster.js:426
Emitter.emit @ socketcluster.js:4152
SCTransport._onClose @ socketcluster.js:1494
wsSocket.onclose @ socketcluster.js:1392
sender.html:26 CONNECTED

I see that when reconnecting some events are lost.

Q : is this normal ?

Q : can the 10s limit be tuned ?

Yves
  • 159
  • 7

1 Answers1

0

Actually you have to set the GCP load balancer connection timeout other than the default value of 10s.

Yves
  • 159
  • 7