xem*_*jas 5 javascript websocket
我正在为我的应用程序使用 Java 和 Websocket API
这是我面临的问题:
我打开一个 websocket 连接以通过某些服务器进行连接:
ws = new WebSocket(targetURL);
Run Code Online (Sandbox Code Playgroud)
当我使用 ws 发送每条消息时,我总是首先检查 ws 的状态,通过:
if(ws.readyState == 1) {
ws.send(request);
} else {
alert("THE CONNECTION IS CLOSED. PLEASE REFRESH YOUR BROWSER.");
}
Run Code Online (Sandbox Code Playgroud)
在客户端和服务器之间的通信期间,我在我的 EndPoint 中保存了一条信息。但有时,当我想从客户端发送消息时,状态不是 1,这意味着 ws 不再打开(CMIIW)。如果我尝试使用 ws = new WebSocket(targetURL) 再次连接,它将创建一个新连接,因此我的 EndPoint 中的信息会丢失。
所以我的问题是:有没有办法使用会话 ID 或任何其他唯一 ID 重新连接 Websocket 的关闭连接,以便可以保留端点中的信息?
谢谢
WebSockets 使用 HTTP 握手,并且它将发送它们拥有的该源的任何 cookie。因此,一种方法是为您的客户端分配一个 cookie,他们将在连接时转发它。如果您使用的框架允许的话,您甚至可以在握手响应中设置 cookie。您可以在连接上使用该 cookie 来找出 ID,如果没有 cookie,则分配一个新 ID。
其他选项是创建您自己的“hello”协议,其中浏览器必须在启动之前发送一个特殊命令,指示其 ID(如果有),或者如果是第一次,则仅指示空 ID。
但除了 cookie 之外,没有任何内置机制可以实现这一点。