栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

websocket客户端原生实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

websocket客户端原生实现

前言

公司今天要求实现websocket的通信,毕竟不是第一次接触这个了,当时觉得应该写的挺快的,但是组长说不能用spring那套框架,只能用原生的,愁死我了,找了半天没找到,官方文档也没找到(太菜了)。后来询问了一下主程看了一个链接终于搞好了,这是一个原生的socket的客户端。

**

代码实现

**
首先要导入依赖,为了方便处理也导入了一个处理json数据的依赖,如果习惯用别的也可以替换fastjson。

         
            org.java-websocket
            Java-WebSocket
            1.3.8
        

        
            com.alibaba
            fastjson
            1.2.75
        

创建socket类

import java.net.URI;
import com.alibaba.fastjson.JSONObject;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class MyWebSocketClient extends WebSocketClient {

    private static Logger logger = LoggerFactory.getLogger(MyWebSocketClient.class);

    public MyWebSocketClient(URI serverUri) {
        super(serverUri);
    }

    @Override
    public void onOpen(ServerHandshake serverHandshake) {
    //如果连接成功后也有业务写在这里
        logger.info(">>>>>>>>>>>websocket open");
    }

    @Override
    public void onMessage(String s) {
    //在这里接收消息并处理业务 如下    ResultMessage这是楼主自己封装的实体类可以替换成自己的 
    JSonObject jsonObject = JSONObject.parseObject(s);
    ResultMessage resultMessage = jsonObject.toJavaObject(ResultMessage.class);
        logger.info(">>>>>>>>>> websocket message");
       
    }

    @Override
    public void onClose(int i, String s, boolean b) {
    //如果连接关闭后也有业务写在这里
        logger.info(">>>>>>>>>>>websocket close");
    }

    @Override
    public void onError(Exception e) {
    //如果报错后也有业务写在这里
        logger.error(">>>>>>>>>websocket error {}",e);
    }


}

启动客户端

 //在主函数中启动即可
 public static void main(String[] args) {
        try {
        //ws://192.168.2.20:8080将这个替换成自己配置的链接地址
            MyWebSocketClient myClient = new MyWebSocketClient(new URI("ws://192.168.2.20:8080"));
            myClient.connect();
            //连接失败会一直重连,如果不符合业务逻辑可以自行更改
            while (!myClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)) {
                System.out.println("连接中。。。");
                Thread.sleep(1000);
            }
            // 连接成功往websocket服务端发送数据
            JSonObject object = new JSONObject();
            object.put("message", "success连接");
            myClient.send(object.toJSONString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

好啦,到这里就结束啦!!!

对了,原文链接在这里:感谢这位老哥

希望能帮到你,如果有错误的话请斧正。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号