是否可以通过WebSocket握手发送自定义数据?
问题描述:
假设我有自己定制的基于Java Chromium Embedded Framework (JCEF)的网页浏览器,它在内部运行WebSocket服务器。是否可以通过WebSocket握手发送自定义数据?
现在我的Web应用程序运行在我的CustomWebBrowser上,可以使用websocket连接内部WebSocket服务器。
但是,我不希望任何其他websocket客户端(使用websockets的另一个浏览器或桌面应用程序)连接到我的内部WebSocket服务器。
一个这样做的方法是通过以下步骤:
- 有无CustomWebBrowser产生一个秘密,并从JCEF发送秘密使用Java-JavaScript bridge Web应用程序。
-
Web App将发送秘密内部的WebSocket服务器的握手过程中,这样的事情:
var ws = new WebSocket(myURL, protocols, mySecret);
内部的WebSocket服务器可以验证与CustomBrowser其产生和传送来的秘密的秘密在步骤1中。
如果秘密被验证,那么握手成功完成,否则websocket连接被拒绝。
我的问题是:是否有可能WebSocket的握手期间发送任何自定义数据?
答
是的,WebSocket handshake使用正常的HTTP请求/响应,您可以添加包含自定义信息的任意头文件。
WebSocket客户端/服务器的库可能不允许这样做;但在从客户端发起连接时,始终可以在url
或中嵌入信息。