i used the subscription.close but still socket connection remains open. my aim is to refresh connections if a team is created , user is added to the team and all permission of the document is given to that team. but while creating that document invocation is not sent to that users in the team. (All collection permission is create to all user).
Hi, any chance you could show me your code?
ok , i have made a test code. which basically refresh connection every 5 seconds . its just for testing purpose. before refreshing previous connection is closed.
getSavedData() async { await sessionCreate(context, true, 95620444); const oneSec = Duration(seconds: 5); Timer.periodic(oneSec, (Timer t) async { //printIps();
// if (subscription != null) {
try {
subscription!.close();
} catch (e) {
print(e);
}
// }
create(context);
});
}
create(BuildContext context) async { final realtime = Realtime(client!); //RealtimeSubscription subscription; try { subscription = realtime.subscribe([ 'databases.62f21a94d3a40d60445b.collections.62a899742200380b8ca7.documents' ]); subscription!.stream.listen( (data) { print(data.payload); if (data.payload.isNotEmpty) { List<dynamic> ev = data.events; print(ev.elementAt(0)); String b = ev.elementAt(0); switch (data.events.elementAt(0)) { case 'databases.62f21a94d3a40d60445b.collections.62a899742200380b8ca7.documents..create': var item = data.payload; print(item); print("items added"); break; case "databases.62f21a94d3a40d60445b.collections.62a899742200380b8ca7.documents..delete": var item = data.payload; print(item); print("items deleted"); break; case "databases.62f21a94d3a40d60445b.collections.documents.update": var item = data.payload; print(item); print("items updated"); break; default: break; } } }, onDone: () { print("test"); }, ); //subscription!.close(); } catch (eee) { print(eee); } }
so how many times are you calling realtime.subscribe()? just once?
btw, for multi-line code, it's best to wrap with 3 backticks and include the language like https://www.markdownguide.org/extended-syntax/#syntax-highlighting
it also called multiple times
using the same realtime instance?
code is in flutter, realtime is declaration is outside timer.
so you use that realtime instance and call realtime.subscribe() multiple times?
yes
So the websocket will remain open unless all subscriptions are closed. If you have multiple subscriptions, you could be running into race conditions where it seems like not all closed , but they all did
Recommended threads
- Appwrite (Dart SDK) (for package_info_pl...
Hi team! Many Flutter plugins now need package_info_plus 10.x and device_info_plus 13.x, but appwrite 25.4.0 still constrains package_info_plus: >=8.0.2 <10.0...
- Images/Videos in storage appearing broke...
I am running into a storage issue after upgrading my self-hosted Appwrite instance , all of my previously uploaded images and videos are now showing as broken i...
- `project_id_missing` in Cloud Function w...
I've got a cloud function written in `Dart-3.12` that I'm trying to create a file in a file bucket. I'm using the latest `dart_appwrite` sdk (`26.1.0`) and App...