无法在发布和调试模式下将websocket连接到iOS应用程序上的服务器(https)

无法在发布和调试模式下将websocket连接到iOS应用程序上的服务器(https),websocket,react-native-ios,Websocket,React Native Ios,背景: 我开发了一个react原生应用程序,它使用websocket(使用socket.io客户端)连接到https web服务器(nginx) 问题:我无法在发布和调试模式下使用iOS应用程序(real device)上的websocket连接到https Web服务器(nginx) 额外资料: 该应用程序在安卓系统上运行良好。 奇怪的是,当我在真实设备上打开“远程调试JS”时,这个应用程序在iOS上运行得非常好 非常感谢您的帮助。我的应用程序使用的是socket.io-client的2.0.

背景: 我开发了一个react原生应用程序,它使用websocket(使用socket.io客户端)连接到https web服务器(nginx)

问题:我无法在发布和调试模式下使用iOS应用程序(real device)上的websocket连接到https Web服务器(nginx)

额外资料: 该应用程序在安卓系统上运行良好。 奇怪的是,当我在真实设备上打开“远程调试JS”时,这个应用程序在iOS上运行得非常好


非常感谢您的帮助。

我的应用程序使用的是socket.io-client的2.0.0版

这个版本似乎试图在所有websocket通信中使用browserwebsocket。 当我在发布模式或调试模式下运行我的应用程序时(在设备上未启用“debug JS Remote”(调试JS远程)选项),该应用程序正试图使用browserwebsocket建立连接,该连接在react本机应用程序上不起作用

当我在设备上启用“远程调试js”选项时,应用程序将能够使用chrome浏览器使用browserwebsocket建立websocket连接

我将socket.io客户端的版本降级为1.5.1,应用程序能够在所有模式下建立websocket连接。此版本内置支持处理react原生应用程序websocket通信

可能有一种方法可以使socket.io的2.0.0版适用于react naitve应用程序。
如果你有办法做到这一点,请提交你的答案。

我知道你解决了你的问题,但你没有降级,而是通过了以下步骤? 因为在iOS中,您需要在info.plist的
NSExceptionDomains
中添加一个密钥。您必须转到info.plist并右键单击它,然后在项目中选择
openas>source code
,并修改代码如下:

    <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsLocalNetworking</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>https://yourdomain</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy
</key>
NSAllowsArbitraryLoadsInWebContent
NSAllowsLocalNetworking
NSExceptionDomains
https://yourdomain
n包括多个域
NSTemporary ExceptionalLowsInSecureHttpLoads
N第三方例外要求转发保密
然后清除并再次重建