package com.example.ws;
import java.net.URI;
import java.util.UUID;
import javax.websocket.ContainerProvider;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
import org.eclipse.jetty.util.component.LifeCycle;
import com.example.services.BroadcastClientEndpoint;
import com.example.services.Message;
public class ClientStarter {
public static void main( final String[] args ) throws Exception {
final String client = UUID.randomUUID().toString().substring( 0, 8 );
final WebSocketContainer container = ContainerProvider.getWebSocketContainer();
final String uri = "ws://localhost:8080/broadcast";
try( Session session = container.connectToServer( BroadcastClientEndpoint.class, URI.create( uri ) ) ) {
for( int i = 1; i <= 10; ++i ) {
session.getBasicRemote().sendObject( new Message( client, "Message #" + i ) );
Thread.sleep( 1000 );
}
}
// JSR-356 has no concept of Container lifecycle.
// (This is an oversight on the spec's part)
// This stops the lifecycle of the Client WebSocketContainer
if( container instanceof LifeCycle ) {
( ( LifeCycle )container ).stop();
}
}
}