Skip to content

Latest commit

 

History

History
88 lines (65 loc) · 2.43 KB

README.md

File metadata and controls

88 lines (65 loc) · 2.43 KB

eventsource-android

An Android EventSource (SSE - Server Sent Events) Library

jCenter Gradle import

compile 'com.tylerjroach:eventsource:1.2.11'

What's new (1.2.11)

  • Removed need to create event source in background thread, now done automatically
  • First official jcenter release
  • Executor fix
  • Add ability to pass String url instead of URI to builder

1.2.0

  • Breaking: EventSource is now created using a Builder

1.1.0

  • Fixed content type issue

Future Plans

  • Replace Netty with Okhttp
  • Use rx observables over SSEHandler
  • Ability to choose thread for callbacks to return

##Example implementation:

private SSEHandler sseHandler = new SSEHandler();

private void startEventSource() {
    eventSource = new EventSource.Builder(eventUrl)
        .eventHandler(sseHandler)
        .headers(extraHeaderParameters)
        .build();
    eventSource.connect();
}
       
private void stopEventSource() {
    if (eventsource != null)
        eventSource.close();
    sseHandler = null;
}

/**
* All callbacks are currently returned on executor thread. 
* If you want to update the ui from a callback, make sure to post to main thread
*/

private class SSEHandler implements EventSourceHandler {

    public SSEHandler() {}
    
    @Override
    public void onConnect() {
        Log.v("SSE Connected", "True");
    }

    @Override
    public void onMessage(String event, MessageEvent message) {
        Log.v("SSE Message", event);
        Log.v("SSE Message: ", message.lastEventId);
        Log.v("SSE Message: ", message.data);
    }

    @Override
    public void onComment(String comment) {
       //comments only received if exposeComments turned on
       Log.v("SSE Comment", comment);
    }

    @Override
    public void onError(Throwable t) {
        //ignore ssl NPE on eventSource.close()
    }

    @Override
    public void onClosed(boolean willReconnect) {
        Log.v("SSE Closed", "reconnect? " + willReconnect);
    }

To stop event source, make sure to run eventSource.close()

If you have a pull request, please follow square-android style guides found here: https://github.com/square/java-code-styles

This project is based of off EventSource-Java: https://github.com/aslakhellesoy/eventsource-java https://github.com/TomMettam/eventsource-java