是否可以使用WebSocket握手发送自定义数据



假设我有自己的基于Java Chromium Embedded Framework(JCEF)的定制web浏览器,它在内部运行WebSocket服务器。

现在,我的web应用程序在我的CustomWebBrowser上运行,可以使用WebSocket与内部WebSocket服务器连接。

但是,我不希望任何其他websocket客户端(另一个使用websocket的浏览器或桌面应用程序)连接到我的内部websocket服务器。

其中一种方法是遵循以下步骤:

  1. 让CustomWebBrowser生成一个秘密,并使用JavaJavaScript桥将该秘密从JCEF发送到web应用程序
  2. Web应用程序将在握手期间将该秘密发送到内部WebSocket服务器,类似于以下内容:

    var ws = new WebSocket(myURL, protocols, mySecret);

  3. 内部WebSocket服务器可以使用在步骤1中生成并发送机密的CustomBrowser来验证机密。

  4. 如果验证了机密,则握手成功完成,否则拒绝websocket连接。

我的问题是:是否可以在websocket握手期间发送任何自定义数据?

是的,WebSocket握手使用外观正常的HTTP请求/响应,您可以向其中添加包含自定义信息的任意标头。

WebSocket客户端/服务器的库可能不允许这样做;但是当从客户端启动连接时,您总是可以在urlprotocol中嵌入信息。

相关内容

  • 没有找到相关文章