- Notifications
You must be signed in to change notification settings - Fork 2.6k
Home
Noah Andrews edited this page Sep 15, 2022 · 24 revisions
Using Java-Websocket is very similar to using javascript websockets: You simply take the client or the server class and override its abstract methods by putting your application logic in place.
These methods are
- onOpen
- onMessage
- onClose
- onError
- onStart (just for the server)
If you have any questions, please check out the FAQ-page.
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import org.java_websocket.WebSocket; import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; public class SimpleServer extends WebSocketServer { public SimpleServer(InetSocketAddress address) { super(address); } @Override public void onOpen(WebSocket conn, ClientHandshake handshake) { conn.send("Welcome to the server!"); //This method sends a message to the new client broadcast( "new connection: " + handshake.getResourceDescriptor() ); //This method sends a message to all clients connected System.out.println("new connection to " + conn.getRemoteSocketAddress()); } @Override public void onClose(WebSocket conn, int code, String reason, boolean remote) { System.out.println("closed " + conn.getRemoteSocketAddress() + " with exit code " + code + " additional info: " + reason); } @Override public void onMessage(WebSocket conn, String message) { System.out.println("received message from "+ conn.getRemoteSocketAddress() + ": " + message); } @Override public void onMessage( WebSocket conn, ByteBuffer message ) { System.out.println("received ByteBuffer from "+ conn.getRemoteSocketAddress()); } @Override public void onError(WebSocket conn, Exception ex) { System.err.println("an error occurred on connection " + conn.getRemoteSocketAddress() + ":" + ex); } @Override public void onStart() { System.out.println("server started successfully"); } public static void main(String[] args) { String host = "localhost"; int port = 8887; WebSocketServer server = new SimpleServer(new InetSocketAddress(host, port)); server.run(); } }
import java.net.URI; import java.net.URISyntaxException; import java.nio.ByteBuffer; import org.java_websocket.client.WebSocketClient; import org.java_websocket.drafts.Draft; import org.java_websocket.drafts.Draft_6455; import org.java_websocket.handshake.ServerHandshake; public class EmptyClient extends WebSocketClient { public EmptyClient(URI serverUri, Draft draft) { super(serverUri, draft); } public EmptyClient(URI serverURI) { super(serverURI); } @Override public void onOpen(ServerHandshake handshakedata) { send("Hello, it is me. Mario :)"); System.out.println("new connection opened"); } @Override public void onClose(int code, String reason, boolean remote) { System.out.println("closed with exit code " + code + " additional info: " + reason); } @Override public void onMessage(String message) { System.out.println("received message: " + message); } @Override public void onMessage(ByteBuffer message) { System.out.println("received ByteBuffer"); } @Override public void onError(Exception ex) { System.err.println("an error occurred:" + ex); } public static void main(String[] args) throws URISyntaxException { WebSocketClient client = new EmptyClient(new URI("ws://localhost:8887")); client.connect(); } }
To connect to a server with a normal signed certificate, you can do it this way as well!
ExampleClient c = new ExampleClient( new URI( "wss://echo.websocket.org" ) )
If you are using a self signed certificate, take a look at the SSLClientExample.java.
You can find additional examples here.