flutter_socket_io icon indicating copy to clipboard operation
flutter_socket_io copied to clipboard

Team, please respond: Connection timeout on Android

Open idevchandra opened this issue 4 years ago • 9 comments

Describe the bug Android connection is timingout. But, iOS is fine.

Environment:

Server: Node.js Client: Flutter with Adhara socket.io iOS Emulators: iOS 14.2 iPhone 12 Pro and iPhone 12 mini Android Emulators tried: Pixel 3a API 30. Pixel 4 API 30.

Have you tried reproducing the issue with example available in this repo? Yes

To Reproduce Steps to reproduce the behavior:

  1. Have the below simple node.js server
// server.js
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);

io.sockets.on("connection", function (socket) {
    console.log("Connected " + socket.id);

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

listen_port = process.env.PORT || 7000;
server.listen(listen_port);
  1. On Terminal, run node server.js

  2. On Terminal run adb -s emulator-5554 reverse tcp:7000 tcp:7000 The behavior of the app is same with or without running the above command.

  3. Change this repo example, as shown below, with the actual server URL - localhost. Because, it is Android emulator, I used 10.0.2.2. I also tried with localhost, 127.0. 0.1 too. With all the three, it is same behavior - "Connection Timeout"

    String URI = Platform.isIOS ? 'http://localhost' : 'http://10.0.2.2';
    ...
    ...
    SocketIO socket = await manager.createInstance(SocketOptions(
        URI,
        nameSpace: (identifier == "namespaced") ? "/adhara" : "/",
        query: {
          "timestamp": DateTime.now().toString()
        },
        enableLogging: true,  // I am sure this has nothing to do with connection. I tried `true` too!
        transports: [
          Transports.WEB_SOCKET 
        ] 
        ));
  1. Run the app on iOS and Android simulators.

Expected behavior iOS Simulator and Android Emulators should be able to connect to server.

Device details:

  • Device Type: Android Emulator
  • Model: Pixel 4
  • OS: Android API 30
  • Package Version adhara_socket_io: ^0.4.1

Relevant Logs

I/flutter ( 7913): Connecting to socket...
W/a4m.flutter_ap( 7913): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, reflection, allowed)
W/a4m.flutter_ap( 7913): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, reflection, allowed)
W/a4m.flutter_ap( 7913): Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (greylist,core-platform-api, reflection, allowed)
I/flutter ( 7913): Log: onConnectError. Reason -> io.socket.client.SocketIOException: timeout
I/flutter ( 7913): Log: onConnectTimeout: Reason -> 20000
I/flutter ( 7913): Log: onConnectError. Reason -> io.socket.client.SocketIOException: timeout
I/flutter ( 7913): Log: onConnectTimeout: Reason -> 20000

idevchandra avatar Jan 28 '21 08:01 idevchandra

@idevchandra did your connection timeout randomly or after particular time interval?

vikas-shrma avatar Feb 18 '21 06:02 vikas-shrma

try using this dependencies

 adhara_socket_io:
    git:
      url: https://github.com/aslamanver/flutter_socket_io

vikas-shrma avatar Feb 18 '21 06:02 vikas-shrma

yes, I am facing same issue

Danish777 avatar Feb 21 '21 08:02 Danish777

Yes, I am facing same issue. cannot connect socket with Android phone.

SmartNodeAutomation avatar Mar 10 '21 11:03 SmartNodeAutomation

@idevchandra @vksBhardwaj @Danish777 @SmartNodeAutomation

It could possibly be due to usage higher socket.io version on server side.

Currently this package supports only v2 socket.io

Please track v3/v4 support here: #160

tiholic avatar Apr 06 '21 11:04 tiholic

Socket connection works fine when connected to localhost(Ex - http://172.20.10.3:4000/), but when connected to url which is hosted on heroku,it stops working. Please help.

tanmoydas61999 avatar Jun 18 '21 08:06 tanmoydas61999

Nothing to worry

You need to add some header's

Get Outlook for Androidhttps://aka.ms/AAb9ysg


From: tanmoydas61999 @.> Sent: Friday, June 18, 2021 2:19:58 PM To: infitio/flutter_socket_io @.> Cc: Vikas Sharma @.>; Mention @.> Subject: Re: [infitio/flutter_socket_io] Team, please respond: Connection timeout on Android (#151)

Socket connection works fine when connected to localhost(Ex - http://172.20.10.3:4000/), but when connected to url which is hosted on heroku,it stops working. Please help.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/infitio/flutter_socket_io/issues/151#issuecomment-863873966, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACPKC3S3FFLPJ55CKE5PVWLTTMCDNANCNFSM4WWTI7UA.

vikas-shrma avatar Jun 18 '21 09:06 vikas-shrma

Which headers? Help is very much appreciated

tanmoydas61999 avatar Jun 18 '21 11:06 tanmoydas61999

@tanmoydas61999 we do add additional configuration when hosting socket server in AWS to allow upgrade to socket from http: https://github.com/infitio/flutter_socket_io/issues/21#issuecomment-498951158

May be something similar has to be done with heroku too?

tiholic avatar Jun 25 '21 07:06 tiholic