mirror of
https://github.com/Linloir/Simple-TCP-Client.git
synced 2025-12-18 17:28:11 +08:00
New Feature:
- Add API ACKFETCH to acknowledge fetch message done
This commit is contained in:
parent
c0ac46939e
commit
a68ef5ba25
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author : Linloir
|
* @Author : Linloir
|
||||||
* @Date : 2022-10-13 14:02:28
|
* @Date : 2022-10-13 14:02:28
|
||||||
* @LastEditTime : 2022-10-22 01:20:14
|
* @LastEditTime : 2022-10-22 21:08:39
|
||||||
* @Description :
|
* @Description :
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -44,17 +44,15 @@ class HomeCubit extends Cubit<HomeState> {
|
|||||||
tcpRepository.pushRequest(FetchMessageRequest(
|
tcpRepository.pushRequest(FetchMessageRequest(
|
||||||
token: (await SharedPreferences.getInstance()).getInt('token')
|
token: (await SharedPreferences.getInstance()).getInt('token')
|
||||||
));
|
));
|
||||||
await for(var response in tcpRepository.responseStreamBroadcast) {
|
// await for(var response in tcpRepository.responseStreamBroadcast) {
|
||||||
if(response.type == TCPResponseType.fetchMessage) {
|
// if(response.type == TCPResponseType.fetchMessage) {
|
||||||
if(response.status == TCPResponseStatus.ok) {
|
// if(response.status == TCPResponseStatus.ok) {
|
||||||
// response as FetchMessageResponse;
|
// // response as FetchMessageResponse;
|
||||||
// localServiceRepository.storeMessages(response.messages);
|
// // localServiceRepository.storeMessages(response.messages);
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}).then((_) {
|
|
||||||
emit(state.copyWith(status: HomePageStatus.done));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,19 +69,26 @@ class HomeCubit extends Cubit<HomeState> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onTCPResponse(TCPResponse response) {
|
void _onTCPResponse(TCPResponse response) async {
|
||||||
if(response.status == TCPResponseStatus.err) {
|
if(response.status == TCPResponseStatus.err) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch(response.type) {
|
switch(response.type) {
|
||||||
case TCPResponseType.forwardMessage: {
|
case TCPResponseType.forwardMessage: {
|
||||||
response as ForwardMessageResponse;
|
response as ForwardMessageResponse;
|
||||||
localServiceRepository.storeMessages([response.message]);
|
await localServiceRepository.storeMessages([response.message]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TCPResponseType.fetchMessage: {
|
case TCPResponseType.fetchMessage: {
|
||||||
response as FetchMessageResponse;
|
response as FetchMessageResponse;
|
||||||
localServiceRepository.storeMessages(response.messages);
|
await localServiceRepository.storeMessages(response.messages);
|
||||||
|
emit(state.copyWith(status: HomePageStatus.done));
|
||||||
|
if(response.messages.isNotEmpty) {
|
||||||
|
tcpRepository.pushRequest(AckFetchRequest(
|
||||||
|
timeStamp: response.messages[0].timeStamp,
|
||||||
|
token: (await SharedPreferences.getInstance()).getInt('token')
|
||||||
|
));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author : Linloir
|
* @Author : Linloir
|
||||||
* @Date : 2022-10-10 08:04:53
|
* @Date : 2022-10-10 08:04:53
|
||||||
* @LastEditTime : 2022-10-21 22:49:14
|
* @LastEditTime : 2022-10-22 20:43:39
|
||||||
* @Description :
|
* @Description :
|
||||||
*/
|
*/
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
@ -49,7 +49,7 @@ class SplashPage extends StatelessWidget {
|
|||||||
return BlocProvider<InitializationCubit>(
|
return BlocProvider<InitializationCubit>(
|
||||||
create: (context) {
|
create: (context) {
|
||||||
return InitializationCubit(
|
return InitializationCubit(
|
||||||
serverAddress: 'chat.linloir.cn',
|
serverAddress: '192.168.43.155',
|
||||||
serverPort: 20706
|
serverPort: 20706
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author : Linloir
|
* @Author : Linloir
|
||||||
* @Date : 2022-10-11 09:44:03
|
* @Date : 2022-10-11 09:44:03
|
||||||
* @LastEditTime : 2022-10-18 14:45:20
|
* @LastEditTime : 2022-10-22 21:01:35
|
||||||
* @Description : Abstract TCP request class
|
* @Description : Abstract TCP request class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -24,6 +24,7 @@ enum TCPRequestType {
|
|||||||
modifyProfile ('MODIFYPROFILE'), //Modify user profile
|
modifyProfile ('MODIFYPROFILE'), //Modify user profile
|
||||||
sendMessage ('SENDMSG'), //Send message
|
sendMessage ('SENDMSG'), //Send message
|
||||||
fetchMessage ('FETCHMSG'), //Fetch message
|
fetchMessage ('FETCHMSG'), //Fetch message
|
||||||
|
ackFetch ('ACKFETCH'), //Acknowledge message fetch
|
||||||
findFile ('FINDFILE'), //Find file by md5 before transmitting the file
|
findFile ('FINDFILE'), //Find file by md5 before transmitting the file
|
||||||
fetchFile ('FETCHFILE'), //Fetch file and file md5 by message md5
|
fetchFile ('FETCHFILE'), //Fetch file and file md5 by message md5
|
||||||
searchUser ('SEARCHUSR'), //Search username and userid by username
|
searchUser ('SEARCHUSR'), //Search username and userid by username
|
||||||
@ -243,4 +244,15 @@ class FetchContactRequest extends TCPRequest {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Map<String, Object?> get body => {};
|
Map<String, Object?> get body => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
class AckFetchRequest extends TCPRequest {
|
||||||
|
final int _timeStamp;
|
||||||
|
|
||||||
|
const AckFetchRequest({required int timeStamp, required int? token}): _timeStamp = timeStamp, super(type: TCPRequestType.ackFetch, token: token);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Map<String, Object?> get body => {
|
||||||
|
'timestamp': _timeStamp
|
||||||
|
};
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user