Tag: long polling

在JAVA中长时间轮询Jquery?

这是我的Java Chat application的问题。 当我的应用程序启动时,我将在我的外部Jquery中调用pingAction() 。 Jquery pingAction将是, function pingAction(){ $.ajax( { type: “post”, url: “PingAction”, async: false, data : “userId=”+encodeURIComponent(userId)+”&secureKey=”+encodeURIComponent(secureKey)+”&sid=”+Math.random() , cache:false, complete: pingAction, timeout: 5000 , contentType: “application/x-www-form-urlencoded; charset=utf-8”, scriptCharset: “utf-8” , dataType: “html”, error: function (xhr, ajaxOptions, thrownError) { alert(“xhr.status : “+xhr.status); if(xhr.status == 12029 || xhr.status == 0){ //alert(“XMLHttp status : “+xhr.status); […]

JAX-RS和长轮询

我正在尝试使用JAX-RS(Jersey实现)进行长轮询,但它不能像我预期的那样工作。 也许我误会了什么。 我很感激任何建议。 请注意,出于安全原因,使用反向连接(类似Atmosphere,Comet等)不是一种选择。 并不是说我目前正在开发Tomcat 7。 从JQuery Ajax调用(使用$.ajax )调用以下方法。 @Path(“/poll”) @GET public void poll(@Suspended final AsyncResponse asyncResponse) throws InterruptedException { new Thread(new Runnable() { @Override public void run() { this.asyncResponse = asyncResponse; // wait max. 30 seconds using a CountDownLatch latch.await(getTimeout(), TimeUnit.SECONDS); } }).start(); } 从我的应用程序调用另一个方法(在JMS调用之后): @POST @Path(“/printed”) public Response printCallback() { // … // […]

如何使用socket.io进行后备工作?

我想将WebSocket与Java一起使用。 问题是,我的服务器通过无法配置的代理与客户端分离。 我一直在寻找具有后退function的WebSocket实现,例如long-polling 。 我找到了socket.io但不知道后备是如何工作的。 在哪种情况下它取代WebSocket以及如何? 是否有其他库,如socket.io与回退实现? 我想在Java找到一个,但我只找到了Jetty 。 编辑:回退只取决于浏览器与WebSocket的兼容性吗? 如果失败的原因是代理配置错误,那么socket.io会将其检测为兼容性故障,从而切换到长轮询(或其他技术)? 答:从v1开始,socket.io包含engine.io ,它带来了以下function:

长轮询冻结浏览器并阻止其他ajax请求

我试图在我的Spring-MVC Web App中实现长轮询,但是在4-5继续AJAX请求之后它冻结了我的浏览器和其他请求。我不知道什么是在这里是我的相关代码。 控制器方法:(服务器端): – @Asynchronous @RequestMapping(“/notify”) public @ResponseBody Events notifyEvent(HttpServletRequest request) { Events events = null; try { events = (Events) request.getSession(false).getServletContext().getAttribute(“events”); System.out.println(“Request Came from” + ((com.hcdc.coedp.safe.domain.User) request.getSession(false).getAttribute(Constants.KEY_LOGGED_IN_USER)).getLoginId()); if (!events.getTypeOfEvents().isEmpty()) { System.out.println(“Removing older entries”); events.getTypeOfEvents().clear(); } while (!events.isHappend()) { //Waiting for event to happen. } events = Events.getInstance(); events.setHappend(false); request.getSession(false).getServletContext().setAttribute(“events”, events); }catch (Exception e) […]

在doGet方法完成后,Servlet是否会返回响应?

显然, doGet方法的返回类型为void,因此,它不会返回任何内容。 从这个意义上讲,我使用“return”这个词来表示将响应发送回请求它的客户端。 我正在尝试实现一个长轮询Servlet。 如果我有想要寄回的东西,就不要发送回复是有益的。 因此,在doGet方法中,我将连接用户的ID和AsyncContext添加到地图中: private ConcurrentMap contexts = new ConcurrentHashMap(); //…in the doGet method when I need to add the context… contexts.put(userId, context); 然后,当我有东西要发回时,我可以检索适当的上下文并写入它的响应输出流: AsyncContext context = contexts.get(userId); PrintWriter writer = context.getResponse().getWriter(); writer.write(“something to send to the client”); 但是,客户似乎永远不会收到回应。 查看浏览器开发者控制台中的“网络”选项卡,我可以看到发送的GET请求然后返回(状态为200)。 这发生在我实际发送回来之前。 这让我相信在doGet方法完成后会返回响应。 也许正因为如此,在此之后,没有任何东西可以发送到客户端,因为没有打开连接。 一旦方法执行完毕,doGet方法是否将响应发送到客户端? 如果是这种情况,如何保持连接打开以获得长轮询效果?

Java或C#中长轮询/ Comet的最佳选择?

在您看来,哪种本机服务器最适合实施长轮询/ Comet ? 第一个目标应用程序是聊天,但还有其他实现 – 我们基本上需要推送到客户端function。 我限制了C#或Java的答案,因为这两种技术在我的工作场所占主导地位。 要求与往常一样:性能,易于部署/编程,定制,……

如何在Spring MVC 3中使用Servlet 3 @WebServlet&async?

我想将servlet 3.0异步支持与spring MVC集成。 就像是: @RequestMapping(“/chat”) @WebServlet(name=”myServlet”, asyncSupported=true) public String getMessage(String userName) { …… } 可能吗?