Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket Wicket Web套接字无法与多个浏览器窗口一起使用_Websocket_Wicket - Fatal编程技术网

Websocket Wicket Web套接字无法与多个浏览器窗口一起使用

Websocket Wicket Web套接字无法与多个浏览器窗口一起使用,websocket,wicket,Websocket,Wicket,我在Wicket中创建了一个Web套接字应用程序,它有一个将消息推送到所有客户端的服务器。注册客户端(应用程序、会话ID和密钥(PageId))后,服务器推送消息。到现在为止,一直都还不错。但是,如果在同一客户端上有同一浏览器的多个浏览器窗口,则只有一个窗口接收消息并对其进行处理 (同一浏览器的)所有浏览器窗口是否共享相同的会话ID?如果是,它们之间是否有区别?所有浏览器(来自同一供应商,例如Firefox)将共享相同的会话id。但是如果页面id不同,则将有单独的web套接字注册,并且所有浏览器

我在Wicket中创建了一个Web套接字应用程序,它有一个将消息推送到所有客户端的服务器。注册客户端(应用程序、会话ID和密钥(PageId))后,服务器推送消息。到现在为止,一直都还不错。但是,如果在同一客户端上有同一浏览器的多个浏览器窗口,则只有一个窗口接收消息并对其进行处理

(同一浏览器的)所有浏览器窗口是否共享相同的会话ID?如果是,它们之间是否有区别?

所有浏览器(来自同一供应商,例如Firefox)将共享相同的会话id。但是如果页面id不同,则将有单独的web套接字注册,并且所有浏览器都将有自己的连接,即所有浏览器都将能够发送/接收消息

如果当用户为同一页面id打开第二个选项卡/窗口时,需要Wicket通知您,请在页面上使用
org.apache.Wicket.ajax.AjaxNewWindowNotifyingBehavior
。您很可能希望使用
setResponsePage(page.getClass())
创建同一页面的新实例,并为其建立新的WebSocket连接。

所有浏览器(来自同一供应商,例如Firefox)将共享相同的会话id。但如果页面id不同,则将有单独的web套接字注册,并且所有这些注册都将有自己的连接,即所有注册都将能够发送/接收消息


如果当用户为同一页面id打开第二个选项卡/窗口时,需要Wicket通知您,请在页面上使用
org.apache.Wicket.ajax.AjaxNewWindowNotifyingBehavior
。您很可能希望使用
setResponsePage(page.getClass())
创建同一页面的新实例,并为其建立新的WebSocket连接。

您好,我遇到了同样的问题。您建议的解决方案有一个问题-呈现新选项卡的页面-建立新的websocket连接(并覆盖连接注册表中以前的连接),然后通知您这是一个新选项卡。但是您已经丢失了对上一个连接的引用。有什么想法吗?我尝试了
RequestCycleListener
来检查
onRequestHandlerResolved
处理程序是否是已打开websocket连接的现有页面实例的
RenderPageRequestHandler
。如果是这样,它将被新页面的新处理程序替换。这很好,但我无法区分新标签和当前标签的刷新。嗨,我也遇到了同样的问题。您建议的解决方案有一个问题-呈现新选项卡的页面-建立新的websocket连接(并覆盖连接注册表中以前的连接),然后通知您这是一个新选项卡。但是您已经丢失了对上一个连接的引用。有什么想法吗?我尝试了
RequestCycleListener
来检查
onRequestHandlerResolved
处理程序是否是已打开websocket连接的现有页面实例的
RenderPageRequestHandler
。如果是这样,它将被新页面的新处理程序替换。这很好,但我不能区分新标签和刷新当前标签。