Flutter 如何处理颤振中插座的连接状态?
我正在构建一个应用程序,需要连接到视频会议设备才能发送呼叫命令 我的问题出现在设备因断电、电缆断开或任何其他问题而断开连接时。在这种情况下,由于Flutter 如何处理颤振中插座的连接状态?,flutter,sockets,dart,tcp,Flutter,Sockets,Dart,Tcp,我正在构建一个应用程序,需要连接到视频会议设备才能发送呼叫命令 我的问题出现在设备因断电、电缆断开或任何其他问题而断开连接时。在这种情况下,由于vcfConnected变量,我能够在应用程序中显示它。但是,我永远无法让连接恢复工作(只需重新启动应用程序,这是不可取的) 我通过dart插座连接到设备,如下所示。此实现背后的思想是在出现问题时尝试重新连接。然而,这种方法并不奏效 有人知道如何更好地处理连接状态吗 每次我必须发送命令并关闭套接字时,连接到设备是否更好 void connect(){
vcfConnected
变量,我能够在应用程序中显示它。但是,我永远无法让连接恢复工作(只需重新启动应用程序,这是不可取的)
我通过dart插座连接到设备,如下所示。此实现背后的思想是在出现问题时尝试重新连接。然而,这种方法并不奏效
有人知道如何更好地处理连接状态吗
每次我必须发送命令并关闭套接字时,连接到设备是否更好
void connect(){
Socket.connect('192.168.5.107', 55003).then((Socket socket) {
sock = socket;
vcfConnected = true;
socket.listen((data) {
String response = hex.encode(data);
dataHandler(context, response);
},
onError: (error) => errorHandler(error),
onDone: () => reconnect()
);
// Init protocol message
sendCommand('&IPV');
getMicMuteState();
getReceiveVolume();
timer = Timer.periodic(Duration(seconds: 10), (Timer t) => checkVcfStatus());
}).timeout(Duration(seconds: 15), onTimeout: () => onTimeout());
}
FutureOr<Null> onTimeout(){
reconnect();
}
void reconnect(){
print('VCF disconnected');
vcfConnected = false;
if (timer != null){
timer.cancel();
}
if (sock != null) {
sock.close();
}
sock = null;
connect();
}
void errorHandler(, error){
print('Error: $error');
reconnect();
}
void checkVcfStatus() {
sendCommand('?S');
}
void connect(){
连接('192.168.5.107',55003)。然后((套接字){
插座=插座;
vcfConnected=true;
socket.listen((数据){
字符串响应=十六进制编码(数据);
dataHandler(上下文、响应);
},
onError:(error)=>errorHandler(error),
onDone:()=>重新连接()
);
//初始化协议消息
sendCommand(“&IPV”);
getMicMuteState();
getReceiveVolume();
timer=timer.periodic(持续时间(秒:10),(timer t)=>checkVcfStatus());
}).超时(持续时间(秒数:15),onTimeout:()=>onTimeout());
}
FutureOr onTimeout(){
重新连接();
}
void重新连接(){
打印(“VCF断开”);
vcfConnected=false;
如果(计时器!=null){
timer.cancel();
}
if(sock!=null){
sock.close();
}
sock=null;
connect();
}
void errorHandler(,错误){
打印('Error:$Error');
重新连接();
}
无效检查vcfstatus(){
sendCommand('S');
}
@jsgalarrega你找到解决方案了吗?@seyedaliAghamali没有…@jsgalarrega你找到解决方案了吗?@seyedaliAghamali没有。。。