粘性网络套接字

2020-09-15 12:39发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我设法使用sp...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我设法使用spring-boot创建websocket,并使用Java客户端连接到应用程序。 在afterConnectionFounded(WebSocketSession会话)回调中,我能够看到HttpHeaders(通过session.getHandshakeHeaders()),我确实是在客户端这样设置的(*):

ClientUpgradeRequest请求=新的ClientUpgradeRequest();

request.getHeaders()。put(" foo",Arrays.asList(new String [] {" bar"})))


我想使用粘性Websocket,以便当客户端重新连接到Websocket时,它像以前一样被定向到相同的应用程序实例(当然,如果有的话)。

对于Servlet,可以轻松地应用JSESSIONID并解析Set-Cookie标头的共振(必须在下一个请求中添加JSESSIONID _AND_ __VCAP_ID__才能使其工作...)。

对于Websocket连接,我想到了一个想法,即首先向位于同一应用程序中的Servlet执行一个简单的GET请求,然后将JSESSIONID和__VCAP_ID__放在(*)之类的ClientUpgradeRequest上。

令我惊讶的是,Cookie似乎无法到达我的应用程序,并且选择了应用程序实例,就像路由器在处理ClientUpgradeRequest时忽略JSESSIONID和__VCAP_ID__一样。


有人对粘性websockets或任何评论有更好的主意吗?


最好的问候

坦率

1条回答
槿木_熙
2020-09-15 13:02

解决了。 我的错误是,由于丢失,码头客户不接受Cookie

WebSocketClient客户端=新的WebSocketClient(ssl);

client.setCookieStore(new HttpCookieStore()); //<-Cookiestore默认为虚拟实现

现在可以了。

一周热门 更多>