如何解决JSF 2.3.15 Mojarra:Websocket 试图无限地重新连接而不是有限地重新连接
如 https://github.com/eclipse-ee4j/mojarra/issues/4572#issuecomment-822392768 中所述,Websocket 错误“Websocket 试图无限地而不是有限地重新连接(由于浏览器特定的错误)”显然在 2.3.15 版本中没有修复。我已经在 WildFly 21.0.0.Final 中尝试了这个版本,手动添加了 2.3.15 Mojarra,结果相同。如果在 Eclipse 中(热)重新部署应用程序,则会发生此错误:
使用 Eclipse 4.18、WildFly 21.0.0.Final 和手动添加的 JSF 2.3.15 Mojarra、Firefox 62.0.3 或 MS Edge 90.0.818 进行测试
豆子:
@Named
@ViewScoped
public class FooBean implements Serializable {
private static final long serialVersionUID = -9057373496036307133L;
@Inject
@Push
private PushContext fooChannel;
public void test() {
fooChannel.send("Test");
}
}
小面:
<f:websocket channel="fooChannel" onmessage="function(m){ ... }" scope="session" />
bean 是 ViewScoped 还是 SessionScoped 并不重要。
有人遇到过这个问题吗?
另见打开的错误 https://github.com/eclipse-ee4j/mojarra/issues/4933。
更新 1
(20.05.2021)
现在我尝试了以下方法:
豆子:
@Named
@SessionScoped
public class FooBean implements Serializable {
private static final long serialVersionUID = -9057373496036307133L;
@Inject
@Push
private PushContext fooChannel;
private Date date = new Date();
public void test() {
fooChannel.send("Test");
}
public String getDate() {
return date.toString();
}
}
小面:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
</h:head>
<h:body>
<h:outputText value="#{fooBean.date}" />
<h:form>
<h:commandButton action="#{fooBean.test()}" value="Send">
<f:ajax />
</h:commandButton>
</h:form>
<f:websocket channel="fooChannel"
onmessage="function(m){ console.log(m); }" scope="session" />
</h:body>
</html>
当我按下按钮时,一切都按预期工作:
然后我对 bean 进行了一些小的更改,服务器重新部署了该应用程序。这显示在 Eclipse 控制台中。之后,我在浏览器中重新加载了应用程序。结果,第一张图片的时间戳没有改变(会话持久性),但现在 websocket 流量在没有按下按钮的情况下淹没了控制台并且不会结束:
我必须停止服务器才能终止这种泛滥。
而且它消耗大量cpu:
Firefox 88.0.1(64 位)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。