All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.payneteasy.socketio.SocketIoSession Maven / Gradle / Ivy

There is a newer version: 1.0-8
Show newest version
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