kann ich keine Verbindung zu einer einzelnen Verbindung herstellen. Ich verwende Atmosphere Runtime 0.6 Snapshot. Tomcat 7 protokolliert korrekt, dass ich den Http11 Nio Connector verwende und es gibt keine Warnung, dass BlockingIO verwendet wird.Mit Atmosphere-Laufzeit
Ich versuche, Nachrichten an drei Arten von Kanälen zu senden.
- Global Broadcaster - Übertragung an alle suspendierten Ressourcen. (Alle)
- Übertragung auf eine bestimmte Ressource (sagen wir, Partner)
- Broadcast aktuelle Ressource (Self)
Wenn ein Login Aktion auftritt, was alle tun, ich in der Sitzung speichern, um müssen diese Art von Rundfunk zu erreichen?
Einige Details meines Codes sind wie folgt:
- Mein Handler implementiert AtmosphereHandler im Konstruktor
ich die globalBroadcaster instanziiert wie folgt:
globalBroadcaster = new DefaultBroadcaster();
Auf Login ,
resource.getAtmosphereConfig().getServletContext().setAttribute(name, selfBroadcaster);
Dabei ist name der Benutzername aus Anfrageparameter und selfBroadcaster ist eine neue Instanz von DefaultBroadcaster. Hierist der Code für sendMessageToPartner,
private synchronized void sendMessageToPartner(Broadcaster selfBroadcaster, AtmosphereResource<HttpServletRequest, HttpServletResponse> resource,String name, String message) {
// this gives the partner's name
String partner= (String) resource.getAtmosphereConfig().getServletContext().getAttribute(name + PARTNER_NAME_TOKEN);
// get partner's broadcaster
Broadcaster outsiderBroadcaster = (Broadcaster) resource
.getAtmosphereConfig().getServletContext()
.getAttribute(partner);
if (outsiderBroadcaster == null) {
sendMessage(selfBroadcaster, "Invalid user " + partner);
return;
}
// broadcast to partner
outsiderBroadcaster.broadcast(" **" + message);
Ich hoffe, dass ich gegeben habe, alle erforderlichen Informationen. Ich kann bei Bedarf weitere Informationen bereitstellen.
Das Problem ist, die globale Nachricht wird gesendet. Wenn die Nachricht an den Partner gesendet wird, wird sie manchmal blockiert, die Nachricht wird überhaupt nicht im Client empfangen. Dies geschieht konsistent nach 3-4 Nachrichten.
Gibt es ein Gewindeproblem? Was mache ich falsch?
Ich hoffe, dass mir jemand dabei hilft.