A simple javax.websocket client example

Can someone provide me with a very simple example javax.websocket client using javax.websocket ?

I want to connect to websocket (ws: //socket.example.com: 1234), send a message (add channel) and listen to the messages. All messages (sent and listened) are presented in JSON format.

And by the way, is this library best suited for simple communication over a web socket?

+89
java websocket
Oct 19 '14 at 16:49
source share
6 answers

I found a great example using javax.websocket here:

http://www.programmingforliving.com/2013/08/jsr-356-java-api-for-websocket-client-api.html

Here's the code based on the above example:

TestApp.java

 package testapp; import java.net.URI; import java.net.URISyntaxException; public class TestApp { public static void main(String[] args) { try { // open websocket final WebsocketClientEndpoint clientEndPoint = new WebsocketClientEndpoint(new URI("wss://real.okcoin.cn:10440/websocket/okcoinapi")); // add listener clientEndPoint.addMessageHandler(new WebsocketClientEndpoint.MessageHandler() { public void handleMessage(String message) { System.out.println(message); } }); // send message to websocket clientEndPoint.sendMessage("{'event':'addChannel','channel':'ok_btccny_ticker'}"); // wait 5 seconds for messages from websocket Thread.sleep(5000); } catch (InterruptedException ex) { System.err.println("InterruptedException exception: " + ex.getMessage()); } catch (URISyntaxException ex) { System.err.println("URISyntaxException exception: " + ex.getMessage()); } } } 

WebsocketClientEndpoint.java

 package testapp; import java.net.URI; import javax.websocket.ClientEndpoint; import javax.websocket.CloseReason; import javax.websocket.ContainerProvider; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.WebSocketContainer; /** * ChatServer Client * * @author Jiji_Sasidharan */ @ClientEndpoint public class WebsocketClientEndpoint { Session userSession = null; private MessageHandler messageHandler; public WebsocketClientEndpoint(URI endpointURI) { try { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); container.connectToServer(this, endpointURI); } catch (Exception e) { throw new RuntimeException(e); } } /** * Callback hook for Connection open events. * * @param userSession the userSession which is opened. */ @OnOpen public void onOpen(Session userSession) { System.out.println("opening websocket"); this.userSession = userSession; } /** * Callback hook for Connection close events. * * @param userSession the userSession which is getting closed. * @param reason the reason for connection close */ @OnClose public void onClose(Session userSession, CloseReason reason) { System.out.println("closing websocket"); this.userSession = null; } /** * Callback hook for Message Events. This method will be invoked when a client send a message. * * @param message The text message */ @OnMessage public void onMessage(String message) { if (this.messageHandler != null) { this.messageHandler.handleMessage(message); } } /** * register message handler * * @param msgHandler */ public void addMessageHandler(MessageHandler msgHandler) { this.messageHandler = msgHandler; } /** * Send a message. * * @param message */ public void sendMessage(String message) { this.userSession.getAsyncRemote().sendText(message); } /** * Message handler. * * @author Jiji_Sasidharan */ public static interface MessageHandler { public void handleMessage(String message); } } 
+104
Oct 19 '14 at 19:24
source share

TooTallNate has a simple client side https://github.com/TooTallNate/Java-WebSocket

Just add java_websocket.jar to the dist folder in your project.

  import org.java_websocket.client.WebSocketClient; import org.java_websocket.drafts.Draft_10; import org.java_websocket.handshake.ServerHandshake; import org.json.JSONException; import org.json.JSONObject; WebSocketClient mWs = new WebSocketClient( new URI( "ws://socket.example.com:1234" ), new Draft_10() ) { @Override public void onMessage( String message ) { JSONObject obj = new JSONObject(message); String channel = obj.getString("channel"); } @Override public void onOpen( ServerHandshake handshake ) { System.out.println( "opened connection" ); } @Override public void onClose( int code, String reason, boolean remote ) { System.out.println( "closed connection" ); } @Override public void onError( Exception ex ) { ex.printStackTrace(); } }; //open websocket mWs.connect(); JSONObject obj = new JSONObject(); obj.put("event", "addChannel"); obj.put("channel", "ok_btccny_ticker"); String message = obj.toString(); //send message mWs.send(message); 

// and close websocket

  mWs.close(); 
+38
Oct 20 '14 at 14:14
source share

Check out the Java EE 7 examples from Arun Gupt.

I played it on github .

home

 /** * @author Arun Gupta */ public class Client { final static CountDownLatch messageLatch = new CountDownLatch(1); public static void main(String[] args) { try { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); String uri = "ws://echo.websocket.org:80/"; System.out.println("Connecting to " + uri); container.connectToServer(MyClientEndpoint.class, URI.create(uri)); messageLatch.await(100, TimeUnit.SECONDS); } catch (DeploymentException | InterruptedException | IOException ex) { Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); } } } 

ClientEndpoint

 /** * @author Arun Gupta */ @ClientEndpoint public class MyClientEndpoint { @OnOpen public void onOpen(Session session) { System.out.println("Connected to endpoint: " + session.getBasicRemote()); try { String name = "Duke"; System.out.println("Sending message to endpoint: " + name); session.getBasicRemote().sendText(name); } catch (IOException ex) { Logger.getLogger(MyClientEndpoint.class.getName()).log(Level.SEVERE, null, ex); } } @OnMessage public void processMessage(String message) { System.out.println("Received message in client: " + message); Client.messageLatch.countDown(); } @OnError public void processError(Throwable t) { t.printStackTrace(); } } 
+16
Mar 11 '16 at 7:44
source share

https://blog.idrsolutions.com/2013/12/websockets-an-introduction/ , this is a simple example that has a client that sends a message to the server and the server sends it back

A few more: https://www.youtube.com/watch?v=BikL52HYaZg http://www.hascode.com/2013/08/creating-a-chat-application-using-java-ee-7-websockets- and-glassfish-4 /

With the Java client as requested by OP Appearance Websocket and Java Swing

+3
Oct 19 '14 at 4:55
source share

Here is one simple example: you can download and test it http://www.pretechsol.com/2014/12/java-ee-websocket-simple-example.html

+3
Dec 17 '14 at 17:10
source share

Use this library org.java_websocket

The first thing you should import this library into build.gradle

 repositories { mavenCentral() } 

then add the implementation to the {} dependency

 implementation "org.java-websocket:Java-WebSocket:1.3.0" 

Then you can use this code

In your activity, declare an object for the Websocketclient as

 private WebSocketClient mWebSocketClient; 

then add this method to callback

  private void ConnectToWebSocket() { URI uri; try { uri = new URI("ws://your web socket url"); } catch (URISyntaxException e) { e.printStackTrace(); return; } mWebSocketClient = new WebSocketClient(uri) { @Override public void onOpen(ServerHandshake serverHandshake) { Log.i("Websocket", "Opened"); mWebSocketClient.send("Hello from " + Build.MANUFACTURER + " " + Build.MODEL); } @Override public void onMessage(String s) { final String message = s; runOnUiThread(new Runnable() { @Override public void run() { TextView textView = (TextView)findViewById(R.id.edittext_chatbox); textView.setText(textView.getText() + "\n" + message); } }); } @Override public void onClose(int i, String s, boolean b) { Log.i("Websocket", "Closed " + s); } @Override public void onError(Exception e) { Log.i("Websocket", "Error " + e.getMessage()); } }; mWebSocketClient.connect(); 

}

+1
Jun 20 '18 at 8:35
source share



All Articles