使用 Native Sockets 在 Android 中实现 WebSockets

Posted

技术标签:

【中文标题】使用 Native Sockets 在 Android 中实现 WebSockets【英文标题】:Implement WebSockets in Android using Native Sockets 【发布时间】:2012-09-14 06:46:44 【问题描述】:

我的 android 应用的 webkit 容器中有一个 javascript 代码。此代码使用 WebSockets 与服务器通信。相同的 JS 代码适用于其他平台,例如 ios,但在 Android 2.3 中则不行。我在某处读到,Android 中的 webkit 不支持 WebSockets,并且支持只会出现在 Jelly Bean 之后。

鉴于此,我需要使用普通套接字从本机层(在 Java 中)提供一个包装器。从我对套接字的了解来看,支持 open()、send()、receive() 等常用 API 似乎很简单。

还有什么我需要知道的 WebSocket 协议需要的,我需要从包装代码中提供吗?毕竟,服务器与客户端(我的 android 应用程序)的对话就像是一个 WebSocket,而不是一个原生套接字。

需要考虑的一些注意事项:a) 我不能使用任何第三方库 - 它必须在内部开发。 b) 不会有任何二进制数据传输;只有文字。

谢谢, 拉贾特

【问题讨论】:

【参考方案1】:

Websockets 不是原始套接字,它们需要初始握手,然后是简单的每个消息框架。有关详细信息,请参阅protocol spec。 handshake 和 data framing 上的部分将是最相关的。

我知道您说过您不能使用第三方库,但请注意像 Java-Websocket 这样的项目您可能会感兴趣。它是liberally licensed,非常适合包含在任何封闭源应用程序中。或者您可能会发现它在调试您自己的代码时作为参考很有用。

【讨论】:

谢谢。我会浏览你提到的链接 您发送的规范链接非常有用,尤其是看到它涉及一些工作。最后,我们使用了您提到的 Java-Websocket 库。再次感谢。

以上是关于使用 Native Sockets 在 Android 中实现 WebSockets的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在 React Native 中进行 Facebook 登录?

在 React Native 应用程序中调试 WebView

react Native环境 搭建

module-native-protocol-unix

在 android studio 模拟器上运行 react native 应用程序