View Javadoc
1   package ordertracker.rs;
2   
3   import java.io.IOException;
4   
5   import ordertracker.EventService;
6   
7   import org.eclipse.jetty.servlets.EventSource;
8   
9   import rx.Subscription;
10  import rx.functions.Action1;
11  
12  public class MyEventSource implements EventSource {
13  
14  	private volatile Subscription subscription;
15  
16  	@Override
17  	public void onOpen(final Emitter emitter) throws IOException {
18  		subscription = EventService.instance().events().subscribe(new Action1<String>() {
19  
20  			//method needs to be synchronized because emitter does not appear to be thread safe
21  			@Override
22  			public synchronized void call(String data) {
23  				try {
24  					emitter.data(data);
25  					System.out.println("sent message " + data);
26  				} catch (IOException e) {
27  					throw new RuntimeException(e);
28  				}
29  			}});
30  	}
31  
32  	@Override
33  	public void onClose() {
34  		subscription.unsubscribe();
35  	}
36  
37  }