Bolt是什么
Bolt是一个用Dart编写的网络协议,用于发送和接收强类型数据对象。它的设计目标是易于使用,并尽可能快。
Bolt分为两部分:BoltClient和BoltServer。它们都实现了BoltProtocol,该协议负责设置连接、验证连接是否安全以及发送/接收数据对象。
所有这些都被抽象在这些类中,这意味着您可以通过继承BoltClient和BoltServer来在Bolt之上实现自己的抽象。
Bolt遵循共享代码的原则,这意味着您编写的通用代码将在服务器和客户端之间共享。
包
| 包 | Pub |
|---|---|
| bolt | |
| bolt_udp_binding | |
| bolt_websocket_binding |
文档?
有关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));
}
}
