WebSocketEchoClient.java - WebSocket Echo Client

Q

How to write a simple client program to connect to the WebSocket Echo Server?

✍: FYIcenter.com

A

I you want to write a simple client program to connect to the WebSocket Echo Server running at wss://echo.websocket.org, you can follow these suggestions:

1. Write a test Java class annotated as @ClientEndpoint:

@ClientEndpoint
public class WebSocketEchoClient {

2. Create a Session instance with the WebSocket Echo Server:

      WebSocketContainer c = ContainerProvider.getWebSocketContainer();
	  URI u = new URI("wss://echo.websocket.org");
	  Session s = c.connectToServer(WebSocketClassInfo.class, u);

3. Send a text message to the server:

	  RemoteEndpoint.Basic r = s.getBasicRemote();
	  r.sendText("Hello there!");

4. Put the thread to sleep for sometime for the server to prcess the message:

	  Thread.sleep(1000*2);
	  s.close();

5. Write a method annotated as @OnMessage to receive the message echoed back from the server:

   @OnMessage
   public void OnMessage(String message) {
      System.out.println("Message received: "+message);
   }

Here is the entir test program, WebSocketClassInfo.java:

// Copyright (c) 2016 FYIcenter.com
import java.net.URI;
import javax.websocket.ClientEndpoint;
import javax.websocket.OnMessage;
import javax.websocket.ContainerProvider;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
import javax.websocket.*;

@ClientEndpoint
public class WebSocketEchoClient {
   public static void main(String[] args) throws Exception {
      WebSocketContainer c = ContainerProvider.getWebSocketContainer();
	  URI u = new URI("wss://echo.websocket.org");
	  Session s = c.connectToServer(WebSocketEchoClient.class, u);

      System.out.println("WebSocket session info:");
      System.out.println("   Protocol version: "+s.getProtocolVersion());
      System.out.println("   Request URI: "+s.getRequestURI());

	  RemoteEndpoint.Basic r = s.getBasicRemote();
	  r.sendText("Hello there!");

	  Thread.sleep(1000*2);
	  s.close();
    }

   @OnMessage
   public void OnMessage(String message) {
      System.out.println("Message received: "+message);
   }
}

You can compile and run the above example in a command window with Java SE JDK 8 and the tyrus-standalone-client.jar from Java EE 7 SDK:

>\fyicenter\jdk-1.8.0\bin\javac 
   -cp \fyicenter\glassfish4\mq\lib\tyrus-standalone-client.jar 
   WebSocketEchoClient.java

>\fyicenter\jdk-1.8.0\bin\java 
   -cp .;\fyicenter\glassfish4\mq\lib\tyrus-standalone-client.jar 
   WebSocketEchoClient

WebSocket session info:
   Protocol version: 13
   Request URI: wss://echo.websocket.org
Message received: Hello there!

 

Using WebSocket API in Java Programs

⇒⇒FAQ for WebSocket API

2018-01-16, 1116👍, 0💬