Mention headers in Flutter Websockets

Viewed 1171

I use Laravel for my Backend WebSocket Handling. I need to Mention Channel Name and Event to listen to any changes but IOWebSocket Library doesn't allow for anything. How do i mention those or is there any other way to listening to WebSocket

Library : web_socket_channel 2.0.0

Code

import 'package:web_socket_channel/io.dart';
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {

  MyHomePage({Key key) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  var channel = IOWebSocketChannel.connect(Uri.parse('ws://192.168.0.164:6001/app/KEY'));

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        title: Text("Web Sockets"),
      ),
      body:
      // SizedBox(),
      Padding(
        padding: const EdgeInsets.all(20.0),
        child: StreamBuilder(
          stream: channel.stream,
          builder: (context, snapshot) {
            print("Snapshot : ${snapshot.data}");

            if (snapshot.hasError) {
              print("Snapshot Error : ${snapshot.error}");
            } else {
              print("Snapshot Success : ${snapshot.data}");
            }

            return Padding(
              padding: const EdgeInsets.symmetric(vertical: 24.0),
              child: Text(snapshot.hasData ? '${snapshot.data}' : ''),
            );
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        // isExtended: true,
        child: Icon(Icons.add),
        backgroundColor: Colors.green,
        onPressed: () async {
          // channel.sink.add('Hello!');
          // await http.get(Uri.parse("http://192.168.0.164:8000/Message/Socket/Send/1000"));
        },
      ),
    );
  }

  @override
  void dispose() {
    channel.sink.close();
    super.dispose();
  }
}

Output

Snapshot : {"event":"pusher:connection_established","data":"{\"socket_id\":\"945362790.973640635\",\"activity_timeout\":30}"}
Snapshot Success : {"event":"pusher:connection_established","data":"{\"socket_id\":\"945362790.973640635\",\"activity_timeout\":30}"}

It prints this when the App opens but when when a socket message is sent, it does nothing. Been stuck for over a week now. Any guidance is appreciated

1 Answers
Related