websocket使用会话ID重新连接

时间:2014-04-11 03:32:36

标签: javascript websocket

我正在为我的应用程序使用Java和Websocket API

这是我面临的问题:

我打开一个websocket连接以通过某个服务器进行连接:

ws = new WebSocket(targetURL);

当我使用ws发送每条消息时,我总是首先通过以下方式检查ws的状态:

if(ws.readyState == 1) {
        ws.send(request);
} else {
        alert("THE CONNECTION IS CLOSED. PLEASE REFRESH YOUR BROWSER.");
}

我在客户端和服务器之间的通信期间在EndPoint中保存了一个信息。但有时,当我想从客户端发送消息时,状态不是1,这意味着ws不再打开(CMIIW)。如果我尝试使用ws = new WebSocket(targetURL)再次连接,它将创建一个新连接,因此我的EndPoint中的信息将丢失。

所以我的问题是: 有没有办法使用会话ID或任何其他唯一ID重新连接Websocket的已关闭连接,以便可以保留我的EndPoint中的信息?

谢谢

1 个答案:

答案 0 :(得分:2)

WebSockets使用HTTP握手,它将发送他们为该来源提供的任何cookie。所以这样做的方法是给你的客户分配一个cookie,然后他们会在连接时转发它。如果您使用它的框架允许,您甚至可以在握手响应中设置cookie。您可以在连接时使用该cookie来计算ID,或者如果没有cookie则指定新ID。

其他选项是创建例如您自己的“hello”协议,其中浏览器必须在开始之前发送特殊命令,指示其ID(如果有),或者如果是第一次则仅显示空ID。

但除了cookie之外,没有内置机制。