在使用signaler迁移到零安全之前,聊天工作非常正常。但迁移后,它在聊天部分不起作用。
场景就像有两个屏幕,我正在使用信号机。1( 聊天列表。2( 和人聊天。
聊天列表中的监听器是完美的,但在第二个屏幕中它不起作用(我第一次安装并运行时刚刚起作用(。奇怪的问题。
一切都在过去工作。我正在使用bloc进行国家管理,并迁移到屈服排放。
一段代码类似于:
void listenOnMessageReceived(
HubConnection hubConnection,
Function(Message? chatMessageReceive) onMessageReceived,
) {
final SocketResponseCallBack chatMessageReceived =
(response) => onMessageReceived(Message.fromJson(response));
final hubMethod = HubMethod(
CHAT_RECEIVED_MESSAGE_METHOD_NAME,
SignalRHelper.toSocketFunction(
CHAT_RECEIVED_MESSAGE_METHOD_NAME, chatMessageReceived));
bool exists = listenOnHubMethod.any((method) => method.methodName == CHAT_RECEIVED_MESSAGE_METHOD_NAME);
if(exists) {
listenOnHubMethod.removeWhere((element) =>
element.methodName == CHAT_RECEIVED_MESSAGE_METHOD_NAME);
SignalRHelper(hubConnection: hubConnection).on(
hubMethod.methodName,
hubMethod.methodFunction,
);
listenOnHubMethod.add(hubMethod);
}else{
SignalRHelper(hubConnection: hubConnection).on(
hubMethod.methodName,
hubMethod.methodFunction,
);
listenOnHubMethod.add(hubMethod);
}
}
我在不同的屏幕上有两种类型的上述代码。但它只在一个屏幕上工作,而在第二个屏幕上没有收听。
这是一段信号侦听器代码:
static MethodInvocationFunc toSocketFunction(
String methodName, SocketResponseCallBack responseCallBack) {
return (arguments) {
try {
if (arguments!.isEmpty) {
throw SocketEmptyResponseException(methodName);
}
final response = arguments.first;
responseCallBack(response);
} on FormatException {
throw SocketResponseException(methodName);
}
};
}
稳定版本或其他版本的迁移是否有任何限制。每一次帮助都是值得的。非常感谢。
不要使用signalR,在IOS上,将无法在后台运行侦听器,或者当应用程序关闭时,您将错过消息。使用FCM。