繁体   English   中英

netty websocket连接通过java客户端

[英]netty websocket connection via java client

是否可以在没有握手请求的情况下在java代码中创建websocket连接?

我知道如何用handhsake请求创建一个使用以下内容:

  String request = "GET " + path + " HTTP/1.1\r\n"
            + "Upgrade: WebSocket\r\n" + "Connection: Upgrade\r\n"
            + "Host: " + host + "\r\n" + "Origin: " + origin + "\r\n"
            + extraHeaders.toString() + "\r\n";

但我想要避免上述情况,一旦我打开套接字连接,只想在频道上发送帧?...这可能吗?

没有WebSocket握手,您无法创建WebSocket连接。 WebSocket握手和成帧是协议的关键部分。 握手是HTTP兼容的,允许WebSockets更容易地与现有的Web基础结构交互。 除此之外,握手还增加了安全机制并允许跨源资源共享( CORS )。

握手后,每个WebSocket帧仍然不是原始数据。 WebSocket是一种基于消息的协议,因此帧头包含消息描述,帧长度,消息类型(二进制,文本,ping等)等。此外,必须使用正在运行的XOR来屏蔽从客户端(浏览器)到服务器的数据面具。 这是为了避免HTTP中介(代理,HTTP缓存等)中的理论漏洞。

不要被名称中的“Socket”误导。 WebSockets具有原始TCP套接字的许多优点,例如全双工,双向,长寿命和低延迟,但它是基于消息的传输协议,分层在原始TCP套接字上并使用HTTP友好握手。

有关更多详细信息,请参阅官方IETF 6455 WebSocket规范

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM