当前位置:网站首页>Simple use of websocket

Simple use of websocket

2022-07-07 14:23:00 LLAiden

Introduce

WebSocket It's one in a single TCP Connect to carry on full duplex Communication protocol .WebSocket The communication protocol is 2011 By the IETF Set it as a standard RFC 6455, And by the RFC7936 Supplementary specifications .WebSocket API Also by W3C Set it as a standard .

WebSocket Makes it easier to exchange data between client and server , Allows the server to actively push data to the client . stay WebSocket API in , The browser and the server only need to complete a handshake , A persistent connection can be created directly between the two , And two-way data transmission

After the introduction, go directly to the code

  Server side

public class WebSocketServerDemo {

    static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public static void main(String[] args) {
        WebSocketServer webSocketServer = new WebSocketServer() {
            @Override
            public void onOpen(WebSocket conn, ClientHandshake handshake) {
                System.out.println("welcome webSocket...");
            }

            @Override
            public void onClose(WebSocket conn, int code, String reason, boolean remote) {
                System.out.println("close webSocket...");
            }

            @Override
            public void onMessage(WebSocket conn, String message) {
                System.out.println("received client message: " + message);
                conn.send(simpleDateFormat.format(new Date()));
            }

            @Override
            public void onError(WebSocket conn, Exception ex) {
                ex.printStackTrace();
            }

            @Override
            public void onStart() {
                System.out.println("websocket start");
            }
        };
        webSocketServer.start();
    }
}

client

public class WebSocketClientDemo {

    public static void main(String[] args) throws URISyntaxException {
        WebSocketClient webSocketClient = new WebSocketClient(new URI("ws://localhost:80")) {
            @Override
            public void onOpen(ServerHandshake handshakedata) {
                String httpStatusMessage = handshakedata.getHttpStatusMessage();
                System.out.println("httpStatusMessage: " + httpStatusMessage);
            }

            @Override
            public void onMessage(String message) {
                System.out.println("received server message: " + message);
            }

            @Override
            public void onClose(int code, String reason, boolean remote) {
                System.out.println("close code: " + code);
                System.out.println("close reason: " + reason);
                System.out.println("close remote: " + remote);
            }

            @Override
            public void onError(Exception ex) {
                ex.printStackTrace();
            }
        };
        webSocketClient.connect();

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int count = 0;
            @Override
            public void run() {
                if (webSocketClient.isOpen()) {
                    webSocketClient.send(String.valueOf(count++));
                }
            }
        }, 1000, 1000);
    }

okhttp Version client

        OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
        Request request = new Request.Builder()
                .url("ws://localhost:80")
                .get()
                .build();
        WebSocket webSocket = okHttpClient.newWebSocket(request, new WebSocketListener() {

            @Override
            public void onFailure(@NotNull WebSocket webSocket, @NotNull Throwable t, @Nullable Response response) {
                t.printStackTrace();
            }

            @Override
            public void onMessage(@NotNull WebSocket webSocket, @NotNull String text) {
                System.out.println("received server message: " + text);
            }

            @Override
            public void onMessage(@NotNull WebSocket webSocket, @NotNull ByteString bytes) {
                String text = bytes.base64();
                System.out.println("received server message: " + text);

            }

            @Override
            public void onOpen(@NotNull WebSocket webSocket, @NotNull Response response) {
                System.out.println(response);
            }
        });

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int count = 0;

            @Override
            public void run() {
                webSocket.send(String.valueOf(count++));
            }
        }, 1000, 1000);
    }

Running effect

 

  Code address : https://github.com/LLAiden/webSocketDemo

Using open source libraries in code : 'org.java-websocket:Java-WebSocket:1.5.2'

Open source library address : https://github.com/TooTallNate/Java-WebSockethttps://github.com/TooTallNate/Java-WebSocket

原网站

版权声明
本文为[LLAiden]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130615199978.html