通过java客户端的netty websocket连接

通过java客户端的netty websocket连接,java,websocket,netty,Java,Websocket,Netty,是否可以用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 + "\

是否可以用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兼容的,允许WebSocket更容易地与现有的web基础设施交互。其中,握手增加了安全机制,并允许跨源资源共享()

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

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

更多细节见官方