Java 从另一个客户端获取GET请求时服务器端推送到客户端
我试图实现一个场景,当另一个客户端B向服务器发出GET请求时,我需要通知一个特定的客户端(比如a)。 我正在寻找服务器推送的氛围。 我已经成功地将B连接到服务器,如果通过大气发送消息,我可以推送他。但是这个特殊的场景我被卡住了。谁能提出一个可行的解决方案? 还有一些指向方向的指针吗Java 从另一个客户端获取GET请求时服务器端推送到客户端,java,websocket,long-polling,atmosphere,Java,Websocket,Long Polling,Atmosphere,我试图实现一个场景,当另一个客户端B向服务器发出GET请求时,我需要通知一个特定的客户端(比如a)。 我正在寻找服务器推送的氛围。 我已经成功地将B连接到服务器,如果通过大气发送消息,我可以推送他。但是这个特殊的场景我被卡住了。谁能提出一个可行的解决方案? 还有一些指向方向的指针吗 import org.atmosphere.annotation.Broadcast; import org.atmosphere.annotation.Suspend; import org.atmosphere.
import org.atmosphere.annotation.Broadcast;
import org.atmosphere.annotation.Suspend;
import org.atmosphere.config.service.AtmosphereService;
import org.atmosphere.cpr.AtmosphereResourceEvent;
import org.atmosphere.cpr.AtmosphereResourceEventListenerAdapter;
import org.atmosphere.jersey.JerseyBroadcaster;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
/**
* Simple chat resource demonstrating the power of Atmosphere. This resource supports transport like WebSocket, Streaming, JSONP and Long-Polling.
*
* @author Jeanfrancois Arcand
*/
@Path("/")
@AtmosphereService (broadcaster = JerseyBroadcaster.class)
public class ChatResource {
/**
* Suspend the response without writing anything back to the client.
*
* @return a white space
*/
@Suspend(contentType = "application/json", listeners = {OnDisconnect.class})
@GET
public String suspend() {
return "";
}
/**
* Broadcast the received message object to all suspended response. Do not write back the message to the calling connection.
*
* @param message a {@link Message}
* @return a {@link Response}
*/
@Broadcast(writeEntity = false)
@POST
@Produces("application/json")
public Response broadcast(Message message) {
return new Response(message.author, message.message);
}
public static final class OnDisconnect extends AtmosphereResourceEventListenerAdapter {
/**
* {@inheritDoc}
*/
@Override
public void onDisconnect(AtmosphereResourceEvent event) {
System.out.println(event);
}
}
}
不要使用@Broadcast,而是直接使用Broadcaster工厂使用Broadcaster,并调用Broadcast.Broadcast(message,ClientB)。看,有很多这样的例子
--Jeanfrancois通过使用广播工厂直接使用广播机并调用广播机。广播(消息,客户端B)您能发布您的代码吗?我会直接使用。服务器端代码将识别出它应该通知客户机,并且它将使用WebSocket来这样做。查看帖子,我想你会发现一种实现这种交流的方法。希望我能帮忙!上面的代码实际上也处理websocket请求。我真正的问题是,发出HTTP-GET调用的客户端实际上向先前注册的客户端发起推送请求。我们如何将该客户机映射为-->HTTP/GET-->服务器-->套接字推送-->客户机BNo应答这么长时间??