Smack api 和 Java
Posted
技术标签:
【中文标题】Smack api 和 Java【英文标题】:Smack api and 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 (页面上的一个属性)时,我看不到任何结果。有谁知道我如何解决这个问题?
问候,
凯斯
【问题讨论】:
【参考方案1】:Smack 是多线程的,它有一个讨厌的习惯,就是吃掉抛出的异常(默默地)。很可能你没有使用线程安全的 GUI,它会抛出一个你永远不会得到的异常。
【讨论】:
【参考方案2】:我认为processMessage
方法是在页面被渲染之后被调用的。
您正在创建一个 MessageListener 实例(通过匿名类),因此您不知道何时会调用 processMessage 方法。我认为您必须使用 AJAX 来对页面进行部分更新、轮询服务器并获取任何新消息以在页面上显示它们。
【讨论】:
以上是关于Smack api 和 Java的主要内容,如果未能解决你的问题,请参考以下文章
NoClassDefFoundError: org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration only API 19