org.nettosphere.samples.chat.SocketIOChatAtmosphereHandler Maven / Gradle / Ivy
/*
* Copyright 2014 Sebastien Dionne
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.nettosphere.samples.chat;
import org.atmosphere.config.service.AtmosphereHandlerService;
import org.atmosphere.cpr.AtmosphereHandler;
import org.atmosphere.cpr.AtmosphereResource;
import org.atmosphere.cpr.AtmosphereResourceEvent;
import org.atmosphere.cpr.AtmosphereResponse;
import org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor;
import org.atmosphere.interceptor.BroadcastOnPostAtmosphereInterceptor;
import java.io.IOException;
import java.util.Date;
/**
* Simple SocketIO Implementation of the Atmosphere Chat
*
* @author Sebastien Dionne : [email protected]
*/
@AtmosphereHandlerService(path = "/chat", interceptors= {AtmosphereResourceLifecycleInterceptor.class
/*, BroadcastOnPostAtmosphereInterceptor.class*/})
public class SocketIOChatAtmosphereHandler implements AtmosphereHandler {
@Override
public void onRequest(AtmosphereResource r) throws IOException {
r.getBroadcaster().broadcast(r.getRequest().getReader().readLine());
}
@Override
public void onStateChange(AtmosphereResourceEvent event) throws IOException {
AtmosphereResource r = event.getResource();
AtmosphereResponse res = r.getResponse();
if (event.isSuspended() && event.getMessage() != null) {
String body = event.getMessage().toString();
// Simple JSON -- Use Jackson for more complex structure
// Message looks like { "author" : "foo", "message" : "bar" }
String author = body.substring(body.indexOf(":") + 2, body.indexOf(",") - 1);
String message = body.substring(body.lastIndexOf(":") + 2, body.length() - 2);
res.getWriter().write(new Data(author, message).toString());
}
}
@Override
public void destroy() {
}
private final static class Data {
private final String text;
private final String author;
public Data(String author, String text) {
this.author = author;
this.text = text;
}
public String toString() {
return "{ \"text\" : \"" + text + "\", \"author\" : \"" + author + "\" , \"time\" : " + new Date().getTime() + "}";
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy