diff --git a/lib/socket/protobuf_client.dart b/lib/socket/protobuf_client.dart index b645212..cc4a484 100644 --- a/lib/socket/protobuf_client.dart +++ b/lib/socket/protobuf_client.dart @@ -129,8 +129,6 @@ class ProtobufClient extends Communicator void dispose() { - _onDisconnectListenerList.clear(); - _arrivedData.clear(); _socket.close(); } } diff --git a/lib/socket/protobuf_server.dart b/lib/socket/protobuf_server.dart index a558fd9..cbb0f48 100644 --- a/lib/socket/protobuf_server.dart +++ b/lib/socket/protobuf_server.dart @@ -4,11 +4,12 @@ import 'dart:io'; import 'package:dart_framework/socket/packets/message_common.pb.dart'; import 'package:dart_framework/socket/protobuf_client.dart'; import 'package:dart_framework/utils/system_util.dart'; +import 'package:protobuf/protobuf.dart'; abstract class ProtobufServer { List _clientList = []; - late ServerSocket _server; + late ServerSocket? _server; final String _host; final int _port; final ProtobufClient Function(Socket) _createNewClient; @@ -18,7 +19,7 @@ abstract class ProtobufServer Future start() async { _server = await ServerSocket.bind(_host, _port); - _server.listen((Socket socket) { + _server?.listen((Socket socket) { var client = _createNewClient(socket); client.addDisconnectListener(onDisconnectedClient); client.addListener(onTemplateData); @@ -46,4 +47,14 @@ abstract class ProtobufServer template.message = 'This message from flutter'; _clientList[0].send(template); } + + Future broadcast(T data) async { + for(var client in _clientList) { + await client.send(data); + } + } + + Future stop() async { + await _server?.close(); + } }