我的Android应用程序的webkit容器中有一个javascript代码。此代码使用WebSockets与服务器进行通信。相同的JS代码适用于其他平台,例如iOS,但在Android 2.3中,它并不适用。我在某地读过Android中的webkit不支持WebSockets,只有Jelly Bean才会支持。
鉴于此,我需要提供一个使用普通套接字的本机层(在Java中)的包装器。从我对套接字的了解很少,支持通常的API(如open(),send(),receive()等)似乎很简单。
我还需要知道WebSocket协议需要什么,我需要从包装器代码中提供吗?毕竟,服务器与客户端(我的Android应用程序)对话,好像它是一个WebSocket,而不是一个本机套接字。
需要考虑的一些注意事项:a)我无法使用任何第三方库 - 它必须在内部开发。 b)不会传输任何二进制数据;只有文字。
谢谢,
Rajath
答案 0 :(得分:1)
Websockets不是原始套接字,它们需要初始握手,然后是简单的每个消息框架。有关详细信息,请参阅protocol spec。 handshake和data framing上的部分最相关。
我知道你说你不能使用第三方库,但要注意像Java-Websocket这样的项目可能会让你感兴趣。它liberally licensed非常适合包含在任何封闭源应用中。或者在调试自己的代码时,您可能会发现它很有用。