Flutter socket_io_client dispose后没法重新连接

发布于 3 年前 作者 phonegap100 1104 次浏览 来自 分享

Flutter 页面销毁的时候调用this.socket.disconnect(); 会发现下次进来后没法重新连接了。

代码如下:

void initState() {
    print("2222");
    super.initState();
    
    //注意分组
    this.socket = IO.io('http://192.168.0.10:3000?roomid=1', <String, dynamic>{
      'transports': ['websocket']     
    });

    print(this.socket);

    this.socket.on('connect', (_) {
      print('connect..');
    });

    this.socket.on('toClient', (data) {
      setState(() {
        this.messageList.add({
          "server":true,
          "title":data["title"],
          "url":data["url"]
        });
      });
      //改变滚动条的位置
      this
          ._scrollController
          .jumpTo(_scrollController.position.maxScrollExtent + 80);
    });
  }

  void dispose() {
    // TODO: implement dispose
    super.dispose();  
    this.socket.disconnect();
  }

如果想让Flutter socket_io_client dispose后重新连接的话我们需要在建立连接的时候配置'forceNew':true这个参数

代码如下:

  this.socket = IO.io('http://192.168.0.10:3000?roomid=1', <String, dynamic>{
      'transports': ['websocket']  ,
	  'forceNew':true 
    });

这样的话当 socket_io_client dispose后就可以重新连接了

回到顶部