
com.payneteasy.socketio.SocketIoSession Maven / Gradle / Ivy
package com.payneteasy.socketio;
import com.google.gson.JsonElement;
import com.payneteasy.socketio.json.GsonConverter;
import com.payneteasy.socketio.json.IJsonConverter;
import com.payneteasy.websocket.WebSocketFrame;
import com.payneteasy.websocket.WebSocketSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
/**
*
*/
public class SocketIoSession {
private static final Logger LOG = LoggerFactory.getLogger(SocketIoSession.class);
private final WebSocketSession webSession;
private final IJsonConverter json = new GsonConverter();
private final SocketIoMessageEncoder encoder = new SocketIoMessageEncoder();
SocketIoSession(WebSocketSession aSession) {
webSession = aSession;
}
public void startAndWait(ISocketIoListener aListener) throws IOException {
webSession.startAndWait(new SocketIoProcessor(aListener, json, this));
}
public void close() throws IOException {
webSession.close();
}
public void sendEvent(String aEventName, Object ... args) {
SocketIoEvent event = new SocketIoEvent(aEventName, args);
SocketIoMessage message = new SocketIoMessage.Builder()
.type(SocketIoMessage.Type.EVENT)
.data(json.toJson(event))
.build();
sendMessage(message);
}
void sendAck(String aId) {
SocketIoMessage message = new SocketIoMessage.Builder()
.type(SocketIoMessage.Type.ACK)
.data(aId+"+[]")
.build();
sendMessage(message);
}
void sendMessage(SocketIoMessage aMessage) {
if (LOG.isDebugEnabled()) {
if (SocketIoMessage.Type.EVENT.equals(aMessage.type) && aMessage.data != null) {
final JsonElement event = json.parse(aMessage.data);
LOG.debug("S-QUEUE:\n{}", json.toPrettyJson(event));
} else {
LOG.debug("S-QUEUE: {}", aMessage);
}
}
WebSocketFrame frame = encoder.encode(aMessage);
webSession.send(frame);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy