fork download
  1. public class ChatSocketHandler implements WebSocketHandler {
  2.  
  3. Sinks.Many<Event> sink = Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false);
  4. Flux<Event> outputMessages = sink.asFlux().cache(25);
  5. ObjectMapper mapper;
  6. Flux<String> output = Flux.from(outputMessages).map(this::toJson);
  7.  
  8.  
  9. public ChatSocketHandler(ObjectMapper objectMapper) {
  10. this.mapper = new ObjectMapper();
  11. }
  12.  
  13. @Override
  14. public Mono<Void> handle(WebSocketSession session) {
  15. session.receive()
  16. .map(WebSocketMessage::getPayloadAsText)
  17. .map(this::toEvent)
  18. .subscribe(
  19. event -> sink.tryEmitNext(event),
  20. throwable -> sink.tryEmitError(throwable)
  21. );
  22.  
  23. return session.send(
  24. Mono.delay(Duration.ofMillis(100))
  25. .thenMany(output.map(session::textMessage))
  26. .log()
  27. );
  28. }
  29.  
  30. Event toEvent(String json) {
  31. try {
  32. return mapper.readValue(json, Event.class);
  33. } catch (IOException e) {
  34. throw new RuntimeException("Invalid JSON:" + json, e);
  35. }
  36. }
  37.  
  38. String toJson(Event event) {
  39. try {
  40. return mapper.writeValueAsString(event);
  41. } catch (JsonProcessingException e) {
  42. throw new RuntimeException(e);
  43. }
  44. }
  45. }
  46.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: class ChatSocketHandler is public, should be declared in a file named ChatSocketHandler.java
public class ChatSocketHandler implements WebSocketHandler {
       ^
Main.java:1: error: cannot find symbol
public class ChatSocketHandler implements WebSocketHandler {
                                          ^
  symbol: class WebSocketHandler
Main.java:3: error: package Sinks does not exist
    Sinks.Many<Event> sink = Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false);
         ^
Main.java:3: error: cannot find symbol
    Sinks.Many<Event> sink = Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false);
               ^
  symbol:   class Event
  location: class ChatSocketHandler
Main.java:4: error: cannot find symbol
    Flux<Event> outputMessages = sink.asFlux().cache(25);
    ^
  symbol:   class Flux
  location: class ChatSocketHandler
Main.java:4: error: cannot find symbol
    Flux<Event> outputMessages = sink.asFlux().cache(25);
         ^
  symbol:   class Event
  location: class ChatSocketHandler
Main.java:5: error: cannot find symbol
    ObjectMapper mapper;
    ^
  symbol:   class ObjectMapper
  location: class ChatSocketHandler
Main.java:6: error: cannot find symbol
    Flux<String> output = Flux.from(outputMessages).map(this::toJson);
    ^
  symbol:   class Flux
  location: class ChatSocketHandler
Main.java:9: error: cannot find symbol
    public ChatSocketHandler(ObjectMapper objectMapper) {
                             ^
  symbol:   class ObjectMapper
  location: class ChatSocketHandler
Main.java:14: error: cannot find symbol
    public Mono<Void> handle(WebSocketSession session) {
                             ^
  symbol:   class WebSocketSession
  location: class ChatSocketHandler
Main.java:14: error: cannot find symbol
    public Mono<Void> handle(WebSocketSession session) {
           ^
  symbol:   class Mono
  location: class ChatSocketHandler
Main.java:30: error: cannot find symbol
    Event toEvent(String json) {
    ^
  symbol:   class Event
  location: class ChatSocketHandler
Main.java:38: error: cannot find symbol
    String toJson(Event event) {
                  ^
  symbol:   class Event
  location: class ChatSocketHandler
Main.java:3: error: cannot find symbol
    Sinks.Many<Event> sink = Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false);
                                                                           ^
  symbol:   variable Queues
  location: class ChatSocketHandler
Main.java:3: error: cannot find symbol
    Sinks.Many<Event> sink = Sinks.many().multicast().onBackpressureBuffer(Queues.SMALL_BUFFER_SIZE, false);
                             ^
  symbol:   variable Sinks
  location: class ChatSocketHandler
Main.java:6: error: cannot find symbol
    Flux<String> output = Flux.from(outputMessages).map(this::toJson);
                          ^
  symbol:   variable Flux
  location: class ChatSocketHandler
Main.java:10: error: cannot find symbol
        this.mapper = new ObjectMapper();
                          ^
  symbol:   class ObjectMapper
  location: class ChatSocketHandler
Main.java:13: error: method does not override or implement a method from a supertype
    @Override
    ^
Main.java:16: error: cannot find symbol
            .map(WebSocketMessage::getPayloadAsText)
                 ^
  symbol:   variable WebSocketMessage
  location: class ChatSocketHandler
Main.java:24: error: cannot find symbol
            Mono.delay(Duration.ofMillis(100))
            ^
  symbol:   variable Mono
  location: class ChatSocketHandler
Main.java:24: error: cannot find symbol
            Mono.delay(Duration.ofMillis(100))
                       ^
  symbol:   variable Duration
  location: class ChatSocketHandler
Main.java:32: error: cannot find symbol
            return mapper.readValue(json, Event.class);
                                          ^
  symbol:   class Event
  location: class ChatSocketHandler
Main.java:33: error: cannot find symbol
        } catch (IOException e) {
                 ^
  symbol:   class IOException
  location: class ChatSocketHandler
Main.java:41: error: cannot find symbol
        } catch (JsonProcessingException e) {
                 ^
  symbol:   class JsonProcessingException
  location: class ChatSocketHandler
24 errors
stdout
Standard output is empty