disconnect method
Implementation
@override
Future disconnect() async {
if (socket == null) {
throw Exception('Channel is already close');
}
for (final controller in subscriptions.values) {
await controller.close();
}
subscriptions.clear();
socket!.close();
socket = null;
}