Websocket Wicket Web套接字无法与多个浏览器窗口一起使用
我在Wicket中创建了一个Web套接字应用程序,它有一个将消息推送到所有客户端的服务器。注册客户端(应用程序、会话ID和密钥(PageId))后,服务器推送消息。到现在为止,一直都还不错。但是,如果在同一客户端上有同一浏览器的多个浏览器窗口,则只有一个窗口接收消息并对其进行处理 (同一浏览器的)所有浏览器窗口是否共享相同的会话ID?如果是,它们之间是否有区别?所有浏览器(来自同一供应商,例如Firefox)将共享相同的会话id。但是如果页面id不同,则将有单独的web套接字注册,并且所有浏览器都将有自己的连接,即所有浏览器都将能够发送/接收消息 如果当用户为同一页面id打开第二个选项卡/窗口时,需要Wicket通知您,请在页面上使用Websocket Wicket Web套接字无法与多个浏览器窗口一起使用,websocket,wicket,Websocket,Wicket,我在Wicket中创建了一个Web套接字应用程序,它有一个将消息推送到所有客户端的服务器。注册客户端(应用程序、会话ID和密钥(PageId))后,服务器推送消息。到现在为止,一直都还不错。但是,如果在同一客户端上有同一浏览器的多个浏览器窗口,则只有一个窗口接收消息并对其进行处理 (同一浏览器的)所有浏览器窗口是否共享相同的会话ID?如果是,它们之间是否有区别?所有浏览器(来自同一供应商,例如Firefox)将共享相同的会话id。但是如果页面id不同,则将有单独的web套接字注册,并且所有浏览器
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
。如果是这样,它将被新页面的新处理程序替换。这很好,但我不能区分新标签和刷新当前标签。