@Timed @GET public Response getKeepAlive(@Auth Account account, @WebSocketSession WebSocketSessionContext context) { if (account != null) { WebsocketAddress address = new WebsocketAddress(account.getNumber(), account.getAuthenticatedDevice().get().getId()); if (!pubSubManager.hasLocalSubscription(address)) { logger.warn("***** No local subscription found for: " + address); context.getClient().close(1000, "OK"); } } return Response.ok().build(); }
@Override public void onWebSocketConnect(WebSocketSessionContext context) { final ProvisioningConnection connection = new ProvisioningConnection(context.getClient()); final ProvisioningAddress provisioningAddress = ProvisioningAddress.generate(); pubSubManager.subscribe(provisioningAddress, connection); context.addListener(new WebSocketSessionContext.WebSocketEventListener() { @Override public void onWebSocketClose(WebSocketSessionContext context, int statusCode, String reason) { pubSubManager.unsubscribe(provisioningAddress, connection); } }); } }
final WebSocketConnection connection = new WebSocketConnection(pushSender, receiptSender, messagesManager, account, device, context.getClient(), connectionId); final PubSubMessage connectMessage = PubSubMessage.newBuilder().setType(PubSubMessage.Type.CONNECTED) .setContent(ByteString.copyFrom(connectionId.getBytes()))
@GET @Path("/prompt") public Response askMe(@Auth HelloAccount account, @WebSocketSession WebSocketSessionContext context) { ListenableFuture<WebSocketResponseMessage> response = context.getClient().sendRequest("GET", "/hello", new LinkedList<>(), Optional.empty()); Futures.addCallback(response, new FutureCallback<WebSocketResponseMessage>() { @Override public void onSuccess(WebSocketResponseMessage result) { logger.warn("Got response: " + new String(result.getBody().orElse(null))); } @Override public void onFailure(Throwable t) { logger.warn("Request error", t); } }); return Response.ok().build(); }