【问题标题】:Smack api and JavaSmack api 和 Java
【发布时间】:2009-02-21 21:27:23
【问题描述】:

我正在使用 Tapestry 5,Smack api 3.1.0。

我已经建立了连接,并且能够通过 xmpp 服务器与用户进行通信,但是我收到的回复在收到时会发送到标准输出:

Chat chat = connection.getChatManager().createChat("blah@jabber.org", new MessageListener() {
    public void processMessage(Chat chat, Message message) {
        // Print out any messages we get back to standard out.
        System.out.println("Received message: " + message.getBody());                   // this works

        showonbrowser = message.getBody();                                                   
        System.out.println(showonbrowser) // this prints nothing
    }
};

我正在寻找对我的 html 文件的回复,以便我可以在 Web 而不是控制台上阅读它们。但是,当我尝试将 message.getBody() 设置为 showonbrowser (页面上的一个属性)时,我看不到任何结果。有谁知道我如何解决这个问题?

问候,

凯斯

【问题讨论】:

    标签: java chat xmpp tapestry smack


    【解决方案1】:

    Smack 是多线程的,它有一个讨厌的习惯,就是吃掉抛出的异常(默默地)。很可能你没有使用线程安全的 GUI,它会抛出一个你永远不会得到的异常。

    【讨论】:

      【解决方案2】:

      我认为processMessage 方法是在页面被渲染之后被调用的。

      您正在创建一个 MessageListener 实例(通过匿名类),因此您不知道何时会调用 processMessage 方法。我认为您必须使用 AJAX 来对页面进行部分更新、轮询服务器并获取任何新消息以在页面上显示它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-20
        • 1970-01-01
        • 1970-01-01
        • 2014-02-07
        • 2011-10-19
        相关资源
        最近更新 更多