Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
react native-ios中未调用关闭时的web套接字事件_Ios_React Native_Websocket - Fatal编程技术网

react native-ios中未调用关闭时的web套接字事件

react native-ios中未调用关闭时的web套接字事件,ios,react-native,websocket,Ios,React Native,Websocket,在我们的react原生应用程序中,我们使用web套接字,有时会出现异常关闭(websocket:close 1006(异常关闭):意外的EOF) onclose/onerror事件不会立即调用,而是在20-60分钟后调用(仅在ios上)。请注意,此问题仅在后台出现 这会导致我们的应用程序不知道连接已关闭,并且不会启动新连接 我们曾尝试使用wireshark收听网络,但问题只是偶尔出现,在过去的24小时内,我们没有成功捕捉到它 我们怎样才能发现这样的事件 我们的守则: initiateConnec

在我们的react原生应用程序中,我们使用web套接字,有时会出现异常关闭(websocket:close 1006(异常关闭):意外的EOF)

onclose/onerror事件不会立即调用,而是在20-60分钟后调用(仅在ios上)。请注意,此问题仅在后台出现

这会导致我们的应用程序不知道连接已关闭,并且不会启动新连接

我们曾尝试使用wireshark收听网络,但问题只是偶尔出现,在过去的24小时内,我们没有成功捕捉到它

我们怎样才能发现这样的事件

我们的守则:

initiateConnection = (url) => {
  this.conn = new WebSocket(url);
  this.conn.onopen = this._handleConnectionOpen;
  this.conn.onerror = this._handleConnectionError;
  this.conn.onclose = this._handleConnectionClose;
  this.conn.onmessage = this._handleMessage;
};

_handleConnectionClose = data => {
  Log.info('WS - connection closed', data.reason);
};

_handleConnectionError = data => {
  Log.info('WS - connection closed', data.reason);
};

显而易见的解决方案是:1)尝试使用不同的websocket客户端库,因为这个库不能充分处理您的错误。2) 修复导致此问题的服务器上的语法错误。您的代码中可能有一个bug。我使用的是react本地客户端,其他库都使用相同的客户端。我不确定这是否是我代码中的一个bug,原因如下:1)这只是偶尔发生的,例如我运行了几天的应用程序,但没有发生;2)这只发生在ios设备上,而不是android设备上,我对它们都有相同的代码。