pauldemarco / socketcluster_client

SocketCluster.io Client for Dart
BSD 3-Clause "New" or "Revised" License
12 stars 10 forks source link

Socket got disconnected after a few second #12

Open chounry opened 4 years ago

chounry commented 4 years ago

I am be able to publish and retrieve data of a channel. But the connection always got disconnected after a few seconds from where i call `Socket.connection.

E/flutter (16915): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FormatException: Unexpected end of input (at character 1)
E/flutter (16915): 
E/flutter (16915): ^
E/flutter (16915): 
E/flutter (16915): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1394:5)
E/flutter (16915): # 1      _ChunkedJsonParser.close (dart:convert-patch/convert_patch.dart:512:7)
E/flutter (16915): # 2      _parseJson (dart:convert-patch/convert_patch.dart:32:10)
E/flutter (16915): # 3      JsonDecoder.convert (dart:convert/json.dart:505:36)
E/flutter (16915): # 4      JsonCodec.decode (dart:convert/json.dart:153:41)
E/flutter (16915): # 5      jsonDecode (dart:convert/json.dart:96:10)
E/flutter (16915): # 6      Socket.handleMessage (package:socketcluster_client/src/socket.dart:135:17)
E/flutter (16915): # 7      _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter (16915): # 8      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter (16915): # 9      _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter (16915): # 10     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter (16915): # 11     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:266:7)
E/flutter (16915): # 12     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:779:19)
E/flutter (16915): # 13     _StreamController._add (dart:async/stream_controller.dart:655:7)
E/flutter (16915): #14     _StreamController.add (dart:async/stream_controller.dart:597:5)
E/flutter (16915): #15     new _WebSocketImpl._fromSocket.<anonymous closure> (dart:_http/websocket_impl.dart:1146:21)
E/flutter (16915): #16     _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter (16915): #17     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter (16915): #18     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter (16915): #19     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter (16915): #20     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:266:7)
E/flutter (16915): #21     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:70:11)
E/flutter (16915): #22     _EventSinkWrapper.add (dart:async/stream_transformers.dart:17:11)
E/flutter (16915): #23     _WebSocketProtocolTransformer._messageFrameEnd (dart:_http/websocket_impl.dart:338:22)
E/flutter (16915): #24     _WebSocketProtocolTransformer._startPayload (dart:_http/websocket_impl.dart:322:9)
E/flutter (16915): #25     _WebSocketProtocolTransformer._lengthDone (dart:_http/websocket_impl.dart:294:7)
E/flutter (16915): #26     _WebSocketProtocolTransformer.add (dart:_http/websocket_impl.dart:197:13)
E/flutter (16915): #27     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:122:24)
E/flutter (16915): #28     _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter (16915): #29     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter (16915): #30     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter (16915): #31     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter (16915): #32     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:266:7)
E/flutter (16915): #33     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:779:19)
E/flutter (16915): #34     _StreamController._add (dart:async/stream_controller.dart:655:7)
E/flutter (16915): #35     _StreamController.add (dart:async/stream_controller.dart:597:5)
E/flutter (16915): #36     _Socket._onData (dart:io-patch/socket_patch.dart:1982:41)
E/flutter (16915): #37     _rootRunUnary (dart:async/zone.dart:1196:13)
E/flutter (16915): #38     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter (16915): #39     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter (16915): #40     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter (16915): #41     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:266:7)
E/flutter (16915): #42     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:779:19)
E/flutter (16915): #43     _StreamController._add (dart:async/stream_controller.dart:655:7)
E/flutter (16915): #44     _StreamController.add (dart:async/stream_controller.dart:597:5)
E/flutter (16915): #45     new _RawSocket.<anonymous closure> (dart:io-patch/socket_patch.dart:1527:33)
E/flutter (16915): #46     _NativeSocket.issueReadEvent.issue (dart:io-patch/socket_patch.dart:1019:14)
E/flutter (16915): #47     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter (16915): #48     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)

I/flutter (16915): onDisconnected: socket Instance of 'Socket'

Then the server cannot retrieve data anymore.

chounry commented 4 years ago

I just found out. It was because of the client module does not ping back to the server. I had to modified the package.

egiadtya commented 3 years ago

@chounry I got same issue, any workaround you did to fix this?

chounry commented 3 years ago

Hi, @egiadtya Yes, I cloned the package and modified this function: https://github.com/pauldemarco/socketcluster_client/blob/fcdc48f4fbed996523db37f382bea13bf3a2da5d/lib/src/socket.dart#L123-L193

From this :

if (message == "#1") {
  sendOrAdd('#2');
} else {
   ....
}

To this:

if (message == "#1") {
    sendOrAdd('#2');
} else if(message.isNotEmpty){
   ...
}else {
   sendOrAdd('');
}