connect method
Implementation
Future connect() async {
if (uri == null || port == null || uid == null) {
throw IOException;
}
channel = WebSocket(Uri.parse('${useSsl ? 'wss' : 'ws'}://$uri:$port'),
backoff: ConstantBackoff(Duration(seconds: 10)),
binaryType: 'arraybuffer');
channel!.connection.listen((event) {
if (event.runtimeType == Connected || event.runtimeType == Reconnected) {
sendLoginMsg();
onConnectionStatusChanged(
event.runtimeType == Connected ? 'Connected' : 'Reconnected');
} else {
onConnectionStatusChanged(event.runtimeType.toString());
}
});
channel!.messages.listen((message) {
Uint8List data = message;
if (data[0] == PING_TYPE) {
sendPong();
} else if (data[0] == REPLY_BODY) {
var message = data.sublist(1, data.length);
replybody.Model info = replybody.Model();
info.mergeFromBuffer(message);
print(info.toProto3Json().toString());
} else if (data[0] == Message_TYPE) {
var message = data.sublist(1, data.length);
messages.Model model = messages.Model();
model.mergeFromBuffer(message);
print(model.toProto3Json().toString());
onMessageReceived(model);
}
}, onError: (error, StackTrace trace) {
channel = null;
onConnectionStatusChanged('Disconnected');
}, onDone: () {
channel = null;
onConnectionStatusChanged('Disconnected');
}, cancelOnError: true);
}