import 'dart:convert'; import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:huixiang/im/Proto.dart'; import 'package:huixiang/im/out/auth.pb.dart'; import 'package:huixiang/im/out/message.pb.dart'; class SocketClient { Socket _socket; connect() async { _socket = await Socket.connect('192.168.10.129', 9090); _socket.listen((data) { print(data); print("socket-listen"); Proto proto = Proto.fromBytes(data); print("socket-listen: $proto"); MsgData data1 = MsgData.fromBuffer(proto.body); print('收到来自:${data1.from},消息内容: ${utf8.decode(data1.data)} '); callbacks.forEach((callback) { callback.call(data1); }); }); } List callbacks = []; addCallback(Function callback) { callbacks.add(callback); } removeCallback(Function callback) { callbacks.remove(callback); } authRequest(String token) { final authReq = AuthReq() ..uid = 1 ..token = '123456'; final authReqBytes = authReq.writeToBuffer(); final proto = Proto(1, 1, authReqBytes); // 假设 operation 和 seqId 为 1 final protoBytes = proto.toBytes(); _socket.add(protoBytes); } sendMessage(var to, String content) { Uint8List data = utf8.encode(content); MsgData msgData = MsgData(to: to,from: 2,type: MsgType.SINGLE_TEXT,data: data); final proto2 = Proto(5,1,msgData.writeToBuffer()); _socket.add(proto2.toBytes()); } }