Skip to content Skip to sidebar Skip to footer

Cannot Keep Socket Connection When Screen Off In Android

I have trouble to keep socket connection in android. I use Socket.IO-client java library in my application. The socket connection is keeped when screen on. but, if screen off, the

Solution 1:

I solve this problem like below:

privatestaticfinalStringEVENT_PING="ping1";
privatestaticfinalStringEVENT_PONG="pong1";

publicvoidconnect() {
    if (socket != null && socket.connected() == true) {
        return;
    }
    IO.Optionsoptions=newIO.Options();

    options.timeout = 60 * 1000;
    options.reconnection = true;

    Log.d(TAG, "try socket connect");
    socket.on(EVENT_CONNECT, this::onConnected)
            .on(EVENT_MESSAGE, this::onMessage)
            .on(EVENT_DISCONNECT, this::onDisconnected)
            .on(EVENT_PING, this::onPing)
            .on(EVENT_CONNECT_TIMEOUT, this::onConnectTimeout)
            .on(EVENT_ERROR, this::onError);

    socket.connect();
}

privatevoidonPing(Object... args) {
    Log.d(TAG, "socket ping");
    socket.emit(EVENT_PONG);
}

This is server code.

var pingInterval = 25 * 1000;
varSocket = require('socket.io');
var io = Socket(server, { 'pingInterval': pingInterval });
var port = process.env.PORT || 3000;

io.on('connection', function(socket){
    console.log('a user connected');

    functionsendPing() {
        socket.emit('ping1');
    }

    setTimeout(sendPing, pingInterval);

    socket.on('disconnect', function(data){
        (typeof socket.member != 'undefined') && disconnect(socket);
        console.log(data);
    });

    socket.on('pong1', function(data) {
        setTimeout(sendPing, pingInterval);
        console.log('pong');
    });
});

Post a Comment for "Cannot Keep Socket Connection When Screen Off In Android"