使用Native Sockets在Android中实现WebSockets

Implement WebSockets in Android using Native Sockets

本文关键字:实现 WebSockets Android Native Sockets 使用      更新时间:2023-09-26

我的Android应用程序的webkit容器中有一个javascript代码。此代码使用WebSockets与服务器进行通信。同样的JS代码适用于iOS等其他平台,但在Android 2.3中则不然。我在某个地方读到安卓系统中的webkit不支持WebSockets,并且只有在Jelly Bean之后才会提供支持。

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

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

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

谢谢,
Rajath

Websocket不是原始套接字,它们需要初始握手,然后是简单的每条消息帧。有关详细信息,请参阅协议规范。关于握手和数据帧的部分将是最相关的。

我知道你说过你不能使用第三方库,但要注意像JavaWebsocket这样的项目可能对你很感兴趣。它获得了自由许可,因此适合包含在任何封闭源代码应用程序中。或者,在调试自己的代码时,您可能会发现它作为参考很有用。