Java实现Websocket客户端

  1. 实现逻辑
  2. 联系作者
    1. 微信公众号
    2. QQ群

通常,我们日常开发中,用到最多的也还是http这种请求应答式的连接形式。
但是难免会遇到需要长连接的场景,这种可以考虑用websocket长连接的形式实现。

先分享一个测试连通性的网址:

http://coolaf.com/tool/chattest

这个地址提供了简易的websocket服务端,可以测试验证下自己的客户端是否可以连接上服务端,服务端会将发送的消息返回给客户端。

实现逻辑

maven依赖如下:

<dependency>
    <groupId>org.java-websocket</groupId>
    <artifactId>Java-WebSocket</artifactId>
    <version>1.5.3</version>
</dependency>

客户端代码如下:

package com.template.websocket;

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.URI;
import java.net.URISyntaxException;

public class WebsocketClient {
    private static Logger logger = LoggerFactory.getLogger(WebsocketClient.class);
    public static WebSocketClient client;
    public static void main(String[] args) throws InterruptedException {
        try {
            client = new WebSocketClient(new URI("ws://121.40.165.18:8800"),new Draft_6455()) {
                @Override
                public void onOpen(ServerHandshake serverHandshake) {
                    logger.info("握手成功");
                }

                @Override
                public void onMessage(String msg) {
                    logger.info("收到消息=========="+msg);
                    if(msg.equals("over")){
                        client.close();
                    }
                }

                @Override
                public void onClose(int i, String s, boolean b) {
                    logger.info("链接已关闭");
                }

                @Override
                public void onError(Exception e){
                    e.printStackTrace();
                    logger.info("发生错误已关闭");
                }
            };
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

        client.connect();
        while(!WebsocketClient.client.isOpen()){
            System.out.println("正在连接,请等待...");
            Thread.sleep(1000);
        }
        //连接成功,发送信息
        client.send("哈喽,连接一下啊");
    }
}

引入依赖,本地创建好客户端之后,就可以直接运行了。

需要说明一点的是:

client = new WebSocketClient(new URI("ws://121.40.165.18:8800"),new Draft_6455())

代码中这个地址,也就是文章开头中,测试服务端的开源地址,仅仅是用来测试自己客户端与websocket服务端的连通性。

联系作者

微信公众号

xiaomingxiaola
(BossLiu)

QQ群

58726094


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com

×

喜欢就点赞,疼爱就打赏

日记本 网文世界