Replace initState block in above example. This is working

@override
void initState() {
super.initState();
channel = WebSocketChannel.connect(Uri.parse(ApiPath.WSS_ANGEL));
channel!.sink.add(
jsonEncode({
"task": "cn",
"channel": "",
"token": "feed_token",
"user": "client_id",
"acctid": "client_id"
}),
);

channel!.sink.add(
jsonEncode({
"task": "mw",
// "channel": "nse_cm|3045",
"channel": "nse_cm|3045&nse_cm|2885",
"token": "feed_token",
"user": "client_id",
"acctid": "client_id"
}),
);

channel!.stream.listen(
(data) {
String response = data.toString();
debugPrint('wss Response before Decode: ' + response);
var step1 = base64.decode(response);
debugPrint('wss Response Decode Step 1: ' + step1.toString());

var inflated = zlib.decode(step1); var step2 = utf8.decode(inflated); debugPrint('wss Response Decode Step 2: ' + step2.toString()); var step3 = json.decode(step2); debugPrint('wss Response Decode Step 3: ' + step3.toString()); if (step3.toString().contains('task') && step3[0]['task'].toString() == 'cn' && step3[0]['msg'].toString() == 'cn') { debugPrint('wss Socket Connected'); } }, onDone: () { debugPrint('wss Socket Connected'); }, onError: (error) => debugPrint('wss Error: ' + error.toString()),

);
}

Decoded Data in Log

wss Response Decode Step 3: [{e: nse_cm, name: sf, ltp: 2597.25, ltq: 20, tk: 2885, ltt: NA}, {e: nse_cm, name: sf, ltp: 518.90, ltq: 8, tk: 3045, ltt: NA}]