0

我正在使用 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 (页面上的一个属性)时,我看不到任何结果。有谁知道我如何解决这个问题?

问候,

凯斯

4

2 回答 2

2

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

于 2009-03-30T23:09:35.750 回答
0

我认为在呈现页面processMessage调用该方法。

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

于 2009-03-31T21:01:48.917 回答