是什么让它成为一个真正的 websocket 客户端,而不仅仅是一个直接的套接字客户端?我看到它构造了 HTTP 请求,我想知道 websocket 与普通 Java 套接字的正式“定义”究竟是什么。
最佳答案
WebSocket 协议(protocol)由 IETF 6455 定义.
koush/android-websockets项目实现了 IETF 6455 版本的 WebSocket 协议(protocol)。
WebSocket 连接以 HTTP 兼容的握手开始,这使得它可以更轻松地与现有的网络基础设施集成。它还为其提供了安全的跨源功能。
一旦建立连接,WebSocket 连接就是全双工双向连接(不同于 HTTP 长轮询等)。但是,即使此时连接也不是原始套接字。 WebSocket 是基于消息的(而不是像底层 TCP 层那样流式传输),因此它需要对数据进行分帧以指示消息边界。每个 WebSocket 帧至少有 2 个字节的 header ,指示帧的长度,是消息的最终帧还是后续帧,数据是 UTF-8 还是原始二进制等。
此外,客户端(浏览器)到服务器的 WebSocket 帧使用简单的运行 XOR 进行屏蔽,以避免网络中介(代理、缓存等)中的理论上的漏洞。
关于java - 是什么让这个 android 库成为真正的 websocket 客户端库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11978979/