bolt logo

bolt coverage style: very good analysis License: MIT


Bolt是什么

Bolt是一个用Dart编写的网络协议,用于发送和接收强类型数据对象。它的设计目标是易于使用,并尽可能快。

Bolt分为两部分:BoltClientBoltServer。它们都实现了BoltProtocol,该协议负责设置连接、验证连接是否安全以及发送/接收数据对象。

所有这些都被抽象在这些类中,这意味着您可以通过继承BoltClientBoltServer来在Bolt之上实现自己的抽象。

Bolt遵循共享代码的原则,这意味着您编写的通用代码将在服务器和客户端之间共享。

Pub
bolt pub package
bolt_udp_binding pub package
bolt_websocket_binding pub package

文档?

有关Bolt的文档,请参阅文档部分。

Bolt的示例可以在示例目录中找到。

快速开始 ?

先决条件 ?

要开始使用Bolt,您必须在您的机器上安装Dart SDK

安装?‍?

bolt添加到您的pubspec.yaml

# ? Install bolt from pub.dev
dart pub add bolt

创建共享数据对象?

为客户端和服务器创建共享数据对象

class Ping extends DataObject {
  const Ping(this.timestamp);

  final int timestamp;

  @override
  List<Object?> get props => [timestamp];

  static void register(BoltRegistry registry) {
    registry.registerObject(
      100,
      DataResolver<Ping>(Ping.new, [
        Argument.positional<Ping, int>((d) => d.timestamp, type: uint32),
      ]),
    );
  }
}

创建服务器?

定义服务器,注册数据对象并监听消息

class ExampleServer extends BoltServer {
  ExampleServer(super.address) {
    Ping.register(registry);

    on(_onPinged);
  }

  void _onPinged(Message<Ping> message) {
    // Do something on ping ...
  }

  @override
  Future<bool> verifyAuth(Connection connection, String token) async {
    return token == 'super_secure_token';
  }
}

创建客户端✨

定义客户端,注册数据对象并实现onConnected方法

class ExampleClient extends BoltClient {
  ExampleClient(super.address, {super.server}) {
    Ping.register(registry);
  }

  @override
  void onConnected() {
    send(Ping(DateTime.now().millisecondsSinceEpoch));
  }
}

GitHub

查看 Github