React Native - iOS Real Device - Socket IO Web Sockets not working

Posted

技术标签:

【中文标题】React Native - iOS Real Device - Socket IO Web Sockets not working【英文标题】:React Native - iOS Real Device - Socket IO Web Sockets not Working 【发布时间】:2019-06-23 22:35:59 【问题描述】:

我遇到了套接字事件未命中服务器的问题。我有一个使用 SocketIO 的应用程序。当我使用 ios 模拟器时,该应用程序运行良好。一旦我尝试在真实设备上运行我的应用程序,套接字事件就不会命中服务器。本地主机和位于 AWS 上的实例都是这种情况。

当我按下一个应该向服务器发送套接字事件的按钮时,我在 Xcode 的控制台中什么也得不到。我唯一能看到的是一个初始错误,该错误似乎在应用程序构建和启动后就不断发生。

2019-01-30 07:12:38.533860-0800 Moder8[1033:191786] [] nw_socket_handle_socket_event [C512.1:1] Socket SO_ERROR [61: Connection refused]
2019-01-30 07:12:38.536864-0800 Moder8[1033:191786] [] nw_socket_connect [C512.2:1] connectx(7, [srcif=0, srcaddr=<NULL>, dstaddr=::1.8097], SAE_ASSOCID_ANY, 0, NULL, 0, NULL, SAE_CONNID_ANY) failed: [61: Connection refused]
2019-01-30 07:12:38.537119-0800 Moder8[1033:191786] [] nw_socket_connect [C512.2:1] connectx failed (fd 7) [61: Connection refused]
2019-01-30 07:12:38.537176-0800 Moder8[1033:191786] [] nw_socket_connect connectx failed (fd 7) [61: Connection refused]
2019-01-30 07:12:38.538112-0800 Moder8[1033:190902] [] nw_connection_get_connected_socket [C512] Client called nw_connection_get_connected_socket on unconnected nw_connection
2019-01-30 07:12:38.538230-0800 Moder8[1033:190902] TCP Conn 0x282234840 Failed : error 0:61 [61]
2019-01-30 07:12:40.115642-0800 Moder8[1033:191786] [] nw_socket_handle_socket_event [C513.1:1] Socket SO_ERROR [61: Connection refused]
2019-01-30 07:12:40.115716-0800 Moder8[1033:191786] [] nw_socket_handle_socket_event [C514.1:1] Socket SO_ERROR [61: Connection refused]
2019-01-30 07:12:40.116498-0800 Moder8[1033:191786] [] nw_socket_handle_socket_event [C513.2:1] Socket SO_ERROR [61: Connection refused]
2019-01-30 07:12:40.116561-0800 Moder8[1033:191786] [] nw_socket_handle_socket_event [C514.2:1] Socket SO_ERROR [61: Connection refused]
2019-01-30 07:12:40.116698-0800 Moder8[1033:190953] [] nw_connection_get_connected_socket [C513] Client called nw_connection_get_connected_socket on unconnected nw_connection
2019-01-30 07:12:40.116715-0800 Moder8[1033:190953] TCP Conn 0x28221d380 Failed : error 0:61 [61]
2019-01-30 07:12:40.116755-0800 Moder8[1033:190953] [] nw_connection_get_connected_socket [C514] Client called nw_connection_get_connected_socket on unconnected nw_connection
2019-01-30 07:12:40.116768-0800 Moder8[1033:190953] TCP Conn 0x28221d2c0 Failed : error 0:61 [61]

我怀疑这是否与问题有关的原因是因为我在使用模拟器时遇到了同样的错误,并且套接字事件可以很好地到达服务器。

我做了什么。

我搜索了谷歌并阅读了许多相关内容的参考资料,包括:

React native socket io no events being emitted from client

Getting "socket.error: [Errno 61] Connection refused" python paramiko

https://medium.com/@hr.hseyin_80381/8-steps-to-get-rid-of-error-nw-connection-get-connected-socket-connection-has-no-connected-handler-1bf622ca2332

Can't connect to web socket react-native-meteor iOS

我几乎觉得这是一件非常简单的事情。我尝试使用 App Transport Security Settings,但找不到任何有用的东西:

【问题讨论】:

【参考方案1】:

我发现了问题所在。 iOS 要求您在连接到 localhost 时使用 Mac IP 地址。我忘记将我的套接字 url 添加到 env 配置文件中,所以它指向 localhost,这显然不适用于 localhost 服务器实例或 AWS 上的实例。

【讨论】:

以上是关于React Native - iOS Real Device - Socket IO Web Sockets not working的主要内容,如果未能解决你的问题,请参考以下文章

React-native 无法打开 ios 模拟器调试菜单

React Native - ios - 从预打包文件加载失败

使用 React-native-ble-plx 配置 React-native

为啥 React Native iOS 模拟器的重新加载快捷方式有时会停止工作?

react-native字体react-native-vector-icons在ios下的使用

React-Native踩坑记录二