Team, please respond: Connection timeout on Android
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:
- 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);
-
On Terminal, run
node server.js -
On Terminal run
adb -s emulator-5554 reverse tcp:7000 tcp:7000The behavior of the app is same with or without running the above command. -
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
]
));
- 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 did your connection timeout randomly or after particular time interval?
try using this dependencies
adhara_socket_io:
git:
url: https://github.com/aslamanver/flutter_socket_io
yes, I am facing same issue
Yes, I am facing same issue. cannot connect socket with Android phone.
@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
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.
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.
Which headers? Help is very much appreciated
@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?