Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java中接收的消息更新JSP(编写messenger客户端)_Java_Javascript_Jsp_Iframe_Listener - Fatal编程技术网

使用Java中接收的消息更新JSP(编写messenger客户端)

使用Java中接收的消息更新JSP(编写messenger客户端),java,javascript,jsp,iframe,listener,Java,Javascript,Jsp,Iframe,Listener,这是我在这里的第一个问题-希望我能从积极的方面开始 重新调整(因为我仍然被卡住): 我正在通过XMPP协议编写一个IM客户端来连接到服务器。为此,我使用了。有两种检查是否收到新消息的方法: 正在使用XMPP连接注册侦听器。这里的缺点是我不能在监听器中更改JSP页面(在内部类中只允许使用最终变量)。 定义数据包收集器和。我希望避免过于频繁地进行投票,这就是为什么我会在有新消息时等待新消息的原因。另外,在这种情况下JSP/Javascript看起来如何?因为不知道刷新显示消息的iframe的时间间

这是我在这里的第一个问题-希望我能从积极的方面开始

重新调整(因为我仍然被卡住): 我正在通过XMPP协议编写一个IM客户端来连接到服务器。为此,我使用了。有两种检查是否收到新消息的方法:
  • 正在使用XMPP连接注册侦听器。这里的缺点是我不能在监听器中更改JSP页面(在内部类中只允许使用最终变量)。
  • 定义数据包收集器和。我希望避免过于频繁地进行投票,这就是为什么我会在有新消息时等待新消息的原因。另外,在这种情况下JSP/Javascript看起来如何?因为不知道刷新显示消息的iframe的时间间隔


因此,这里的底线是在没有持续轮询的情况下接收消息。我还想坚持使用Smack API,因为我认为它有很好的文档记录。我的问题更多地在于JSP部门。这方面的任何专业知识都会很有帮助

不确定这是否是编写客户端侦听器的最佳方法


我建议使用AJAX,这样您就可以在服务器端完成所有工作,并且AJAX组件会不断轮询来自服务器的数据

关于问题描述的一个小提示:您的侦听器不必是内部类。(但这可能对你毫无帮助)

看看。也许它可以帮助你,或者至少给你一些想法。检查实现和备选方案部分


干杯

实际上,我在这里使用Ajax的方式是用收到的消息填充div。至于数据轮询,我使用的API不支持这一点,这对我来说很有意义,因为当您连接到IM服务器时,您就是获取消息的人。但也许我误解了你的意思,你能更具体一点吗?我同意medopal的观点,并使用AJAX解决方案,创建一个单独的页面作为服务,使用setTimeout()中的JavaScript函数进行轮询。无论何时轮询,我都会让页面返回一个JOSN对象,其中包含最后一条记录,直到给定的ID或时间戳为止,这是一个优雅而健壮的解决方案。不幸的是,在实践中,您一直被轮询所困扰,因为在JS中保持流式连接打开并不实际(技术上可行,但由于浏览器/代理/web筛选器软件超时限制的不同,需要高级忍者技能以健壮的方式实现)。轮询实践确实是一个好方法的瓶颈。不过,我们会记住JSON的做法。不管怎样,谢谢。嗯,那么你如何实现PacketListener[1]接口呢?[1]