IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Flutter WebSocket -> 正文阅读

[网络协议]Flutter WebSocket

再开发过程中我们经常会使用到WebSocket,而插件库为我们提供了一个使用非常方便的插件

web_socket_channel

我们需要根据自己的Flutter 版本选择对应的即可

web_socket_channel: ^1.1.0

在pubspec.yaml中我们引入,然后pub get 一下

pub get

到此就完成插件的引用。下面就是使用了

官网的代码使用

import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:web_socket_channel/status.dart' as status;

main() async {
  var channel = IOWebSocketChannel.connect(Uri.parse('ws://localhost:1234'));

  channel.stream.listen((message) {
    channel.sink.add('received!');
    channel.sink.close(status.goingAway);
  });
}

下面是我对其进行了简单的封装

import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:jianfa/view/main/my/message/detail/MessageDetailSocket.dart';
import 'package:jianfa/widget/CustomDialog.dart';
import 'package:web_socket_channel/io.dart';
import 'package:flutter/material.dart';
import 'package:web_socket_channel/web_socket_channel.dart';


class WebSocketChannel {
  // 创建WebSocketChannel 单利,全局只有一个对象
  WebSocketChannel._privateConstructor();

  static final WebSocketChannel _instance =
      WebSocketChannel._privateConstructor();

  static WebSocketChannel get instance {
    return _instance;
  }
    
  BuildContext contexts;

  
  IOWebSocketChannel channel;
   
  // 开始进行链接
  void connect(BuildContext context) {
    contexts = context;
    channel = IOWebSocketChannel.connect(
        "ws://localhost:1234");
    sendMessage();
    channel.stream.listen(this.onData, onError: onError, onDone: onDone);
  }

  // 发送消息
  void sendMessage() {
    channel.sink.add("");
  }

  // 断连,然后执行重连
  onDone() {
    debugPrint("Socket is closed");
    channel = IOWebSocketChannel.connect(
        "ws://localhost:1234");
    channel.stream.listen(this.onData, onError: onError, onDone: onDone);
    (() async {});
  }
  
  // 错误日志
  onError(err) {
    debugPrint(err.runtimeType.toString());
    WebSocketChannelException ex = err;
    debugPrint(ex.message);
  }

  // 接受数据,数据json字符串,然后转成Map
  onData(event) {
    print('收到消息:' + event);
    Map<String, dynamic> map = json.decode(event);
    
  }

  void dispose() {
    channel.sink.close();
  }
}

下面是使用

// 创建对象
WebSocketChannel webSocketChannel = WebSocketChannel.instance;

// 开始进行链接
webSocketChannel.connect(context);

// 断开链接
webSocketChannel.dispose();

到此就完成了web_socket_channel的简单封装和基本使用。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 08:19:50  更:2021-09-19 08:19:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/21 6:54:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码