JSF 2.3& o:socket或f:websocket - 没有任何“推送”到客户端

时间:2018-04-18 17:34:46

标签: jsf wildfly omnifaces jsf-2.3

在@BalusC的帮助下,我的EJB方法使用在EE8上运行的JSF 2.3在JBoss WildFly 12.0.0.Final(MacOS)上触发事件:

beanManager.fireEvent("updateNotifications" );
POJO:

@Inject
@Push(channel = "testChannel")
private PushContext pushContext;

public void onPersist(@Observes String notification) {
    logger.info("***** onPersist notification = {}", notification);
    pushContext.send("updateNotifications");
}

收到&打印消息;

  

16:03:36,682 INFO [com.notifywell.ejb.FoodsCosmeticsMedicinesEJB]   (默认任务-3)>>>>> insertFoodsCosmeticsMedicinesEJB beanManager =   Weld BeanManager for NOTiFYwell.ear / NOTiFYwellJAR.jar / [bean count = 39]

     

16:03:36,695 INFO [com.notifywell.push.PushBean](默认任务-3)   ***** onPersist notification = updateNotifications

我无法通过Push Send与XHTML进行通信。我试过OmniFaces 3.1& JBoss WildFly 12 JSF 2.3并没有重新渲染(此处未显示XHTML代码)。使用OmniFaces 3.1时,我无法显示onmessage:

<h:form>
    <o:socket channel="testChannel" onmessage="socketListener"/>
    <h:outputScript>
        function socketListener(message, channel, event) {
            console.log(message);
        }
    </h:outputScript>
</h:form>

如果我在Chrome中打开控制台日志它是空的,那就没有“消息”。

在WireShark中,我看到了:

  

2601 9.810264 :: 1 :: 1 HTTP 997 GET   /NOTiFYwell/omnifaces.push/testChannel?a1ef3363-dc5a-4153-a4c7-73b0e183713d   HTTP / 1.1

好像是

pushContext.send(notification);

没有被执行。

1 个答案:

答案 0 :(得分:0)

我与Wildfly 14的情况完全相同。

要解决此问题,我必须:

  1. 取消部署应用程序
  2. 关闭服务器
  3. 单独清除tmp文件夹中的内容
  4. 启动服务器
  5. 部署

现在它可以工作了,但是如果我没有执行步骤1-4进行部署,就不会再工作了。 (也许没有必要执行步骤3,但我这样做是因为我遇到了很多其他错误)