MuhammedKpln / peerdart

Simple peer-to-peer with WebRTC for Dart. PeerDart mirrors the design of peerjs.
MIT License
78 stars 25 forks source link

Bad State Errors When Attempting To Send Data #16

Closed garv-shah closed 1 year ago

garv-shah commented 1 year ago

Describe the bug Following the example code in the README results in bad state errors, making the data transfer unusable.

To Reproduce Steps to reproduce the behavior: Follow example in README on iOS

Expected behavior Data to be transfered

Smartphone (please complete the following information):

Additional context

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method createPeerConnection on channel FlutterWebRTC.Method)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:294:7)
<asynchronous suspension>
#1      RTCFactoryNative.createPeerConnection (package:flutter_webrtc/src/native/factory_impl.dart:40:22)
<asynchronous suspension>
#2      Negotiator._startPeerConnection (package:peerdart/src/negotiator.dart:154:9)
<asynchronous suspension>
#3      Negotiator.startConnection (package:peerdart/src/negotiator.dart:17:28)
<asynchronous suspension>
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: Cannot fire new event. Controller is already firing an event
#0      _BroadcastStreamController.close (dart:async/broadcast_stream_controller.dart:265:24)
#1      StreamEventEmitter.close (package:events_emitter/emitters/stream_event_emitter.dart:117:30)
#2      Socket._cleanup (package:peerdart/src/socket.dart:149:5)
#3      Socket.dispose (package:peerdart/src/socket.dart:97:5)
#4      Peer.disconnect (package:peerdart/src/peer.dart:381:12)
#5      Peer._abort (package:peerdart/src/peer.dart:307:7)
#6      Peer._handleMessage (package:peerdart/src/peer.dart:168:9)
#7      Peer._createServerConnection.<anonymous closure> (package:peerdart/src/peer.dart:121:7)
#8      _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#9      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#10     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#11     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:123:11)
#12     _MapStream._handleData (dart:async/stream_pipe.dart:218:10)
#13     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:153:13)
#14     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#15     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#16     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#17     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:63:11)
#18     _EventSinkWrapper.add (dart:async/stream_transformers.dart:13:11)
#19     _WhereTypeStreamSink.add (package:rxdart/src/transformers/where_type.dart:11:19)
#20     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:111:24)
#21     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#22     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#23     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#24     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:123:11)
#25     _WhereStream._handleData (dart:async/stream_pipe.dart:195:12)
#26     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:153:13)
#27     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#28     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#29     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#30     _SyncBroadcastStreamController._sendData.<anonymous closure> (dart:async/broadcast_stream_controller.dart:385:20)
#31     _BroadcastStreamController._forEachListener (dart:async/broadcast_stream_controller.dart:322:15)
#32     _SyncBroadcastStreamController._sendData (dart:async/broadcast_stream_controller.dart:384:5)
#33     _BroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:244:5)
#34     StreamEventEmitter.emitEvent (package:events_emitter/emitters/stream_event_emitter.dart:53:51)
#35     StreamEventEmitter.emit (package:events_emitter/emitters/stream_event_emitter.dart:92:40)
#36     Socket.start.<anonymous closure> (package:peerdart/src/socket.dart:54:7)
#37     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#38     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#39     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#40     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:123:11)
#41     _HandleErrorStream._handleData (dart:async/stream_pipe.dart:253:10)
#42     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:153:13)
#43     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#44     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#45     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#46     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#47     _StreamController._add (dart:async/stream_controller.dart:648:7)
#48     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#49     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#50     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#51     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#52     _StreamController._add (dart:async/stream_controller.dart:648:7)
#53     _StreamController.add (dart:async/stream_controller.dart:596:5)
#54     new _WebSocketImpl._fromSocket.<anonymous closure> (dart:_http/websocket_impl.dart:1144:21)
#55     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#56     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#57     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#58     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:63:11)
#59     _EventSinkWrapper.add (dart:async/stream_transformers.dart:13:11)
#60     _WebSocketProtocolTransformer._messageFrameEnd (dart:_http/websocket_impl.dart:332:23)
#61     _WebSocketProtocolTransformer.add (dart:_http/websocket_impl.dart:226:46)
#62     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:111:24)
#63     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#64     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#65     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#66     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#67     _StreamController._add (dart:async/stream_controller.dart:648:7)
#68     _StreamController.add (dart:async/stream_controller.dart:596:5)
#69     _Socket._onData (dart:io-patch/socket_patch.dart:2324:41)
#70     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#71     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#72     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#73     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#74     _StreamController._add (dart:async/stream_controller.dart:648:7)
#75     _StreamController.add (dart:async/stream_controller.dart:596:5)
#76     _RawSecureSocket._sendReadEvent (dart:io/secure_socket.dart:1107:19)
#77     Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)
#78     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
#79     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
#80     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method createPeerConnection on channel FlutterWebRTC.Method)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:294:7)
<asynchronous suspension>
#1      RTCFactoryNative.createPeerConnection (package:flutter_webrtc/src/native/factory_impl.dart:40:22)
<asynchronous suspension>
#2      Negotiator._startPeerConnection (package:peerdart/src/negotiator.dart:154:9)
<asynchronous suspension>
#3      Negotiator.startConnection (package:peerdart/src/negotiator.dart:17:28)
<asynchronous suspension>
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: Cannot fire new event. Controller is already firing an event
#0      _BroadcastStreamController.close (dart:async/broadcast_stream_controller.dart:265:24)
#1      StreamEventEmitter.close (package:events_emitter/emitters/stream_event_emitter.dart:117:30)
#2      Socket._cleanup (package:peerdart/src/socket.dart:149:5)
#3      Socket.dispose (package:peerdart/src/socket.dart:97:5)
#4      Peer.disconnect (package:peerdart/src/peer.dart:381:12)
#5      Peer._abort (package:peerdart/src/peer.dart:307:7)
#6      Peer._handleMessage (package:peerdart/src/peer.dart:168:9)
#7      Peer._createServerConnection.<anonymous closure> (package:peerdart/src/peer.dart:121:7)
#8      _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#9      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#10     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#11     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:123:11)
#12     _MapStream._handleData (dart:async/stream_pipe.dart:218:10)
#13     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:153:13)
#14     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#15     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#16     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#17     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:63:11)
#18     _EventSinkWrapper.add (dart:async/stream_transformers.dart:13:11)
#19     _WhereTypeStreamSink.add (package:rxdart/src/transformers/where_type.dart:11:19)
#20     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:111:24)
#21     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#22     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#23     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#24     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:123:11)
#25     _WhereStream._handleData (dart:async/stream_pipe.dart:195:12)
#26     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:153:13)
#27     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#28     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#29     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#30     _SyncBroadcastStreamController._sendData.<anonymous closure> (dart:async/broadcast_stream_controller.dart:385:20)
#31     _BroadcastStreamController._forEachListener (dart:async/broadcast_stream_controller.dart:322:15)
#32     _SyncBroadcastStreamController._sendData (dart:async/broadcast_stream_controller.dart:384:5)
#33     _BroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:244:5)
#34     StreamEventEmitter.emitEvent (package:events_emitter/emitters/stream_event_emitter.dart:53:51)
#35     StreamEventEmitter.emit (package:events_emitter/emitters/stream_event_emitter.dart:92:40)
#36     Socket.start.<anonymous closure> (package:peerdart/src/socket.dart:54:7)
#37     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#38     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#39     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#40     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:123:11)
#41     _HandleErrorStream._handleData (dart:async/stream_pipe.dart:253:10)
#42     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:153:13)
#43     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#44     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#45     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#46     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#47     _StreamController._add (dart:async/stream_controller.dart:648:7)
#48     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#49     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#50     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#51     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#52     _StreamController._add (dart:async/stream_controller.dart:648:7)
#53     _StreamController.add (dart:async/stream_controller.dart:596:5)
#54     new _WebSocketImpl._fromSocket.<anonymous closure> (dart:_http/websocket_impl.dart:1144:21)
#55     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#56     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#57     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#58     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:63:11)
#59     _EventSinkWrapper.add (dart:async/stream_transformers.dart:13:11)
#60     _WebSocketProtocolTransformer._messageFrameEnd (dart:_http/websocket_impl.dart:332:23)
#61     _WebSocketProtocolTransformer.add (dart:_http/websocket_impl.dart:226:46)
#62     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:111:24)
#63     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#64     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#65     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#66     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#67     _StreamController._add (dart:async/stream_controller.dart:648:7)
#68     _StreamController.add (dart:async/stream_controller.dart:596:5)
#69     _Socket._onData (dart:io-patch/socket_patch.dart:2324:41)
#70     _RootZone.runUnaryGuarded (dart:async/zone.dart:1586:10)
#71     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
#72     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
#73     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:774:19)
#74     _StreamController._add (dart:async/stream_controller.dart:648:7)
#75     _StreamController.add (dart:async/stream_controller.dart:596:5)
#76     _RawSecureSocket._sendReadEvent (dart:io/secure_socket.dart:1107:19)
#77     Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)
#78     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
#79     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
#80     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method createPeerConnection on channel FlutterWebRTC.Method)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:294:7)
<asynchronous suspension>
#1      RTCFactoryNative.createPeerConnection (package:flutter_webrtc/src/native/factory_impl.dart:40:22)
<asynchronous suspension>
#2      Negotiator._startPeerConnection (package:peerdart/src/negotiator.dart:154:9)
<asynchronous suspension>
#3      Negotiator.startConnection (package:peerdart/src/negotiator.dart:17:28)
<asynchronous suspension>
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: Cannot fire new event. Controller is already firing an event
#0      _BroadcastStreamController.close (dart:async/broadcast_stream_controller.dart:265:24)
#1      StreamEventEmitter.close (package:events_emitter/emitters/stream_event_emitter.dart:117:30)
#2      Socket._cleanup (package:peerdart/src/socket.dart:149:5)
#3      Socket.dispose (package:peerdart/src/socket.dart:97:5)
#4      Peer.disconnect (package:peerdart/src/peer.dart:381:12)
#5      Peer._abort (package:peerdart/src/peer.dart:307:7)
#6      Peer._handleMessage (package:peerdart/src/peer.dart:168:9)
#7      Peer._createServerConnection.<anonymous closure> (package:peerdart/src/peer.dart:121:7)
MuhammedKpln commented 1 year ago

I don't think this issue is package related. Try to add flutter_webrtc as your dependency and try again.

garv-shah commented 1 year ago

Yeah, I tried that and it didn't help. I presumed it would be package related since the traceback links to the peerdart package

MuhammedKpln commented 1 year ago

Peerdart basically is a wrapper around flutter webrtc, and MissingPluginException is well when Flutter does not find its native modules. Have a look at flutter_webrtc GitHub page and see if you can find something.