前言
公司今天要求实现websocket的通信,毕竟不是第一次接触这个了,当时觉得应该写的挺快的,但是组长说不能用spring那套框架,只能用原生的,愁死我了,找了半天没找到,官方文档也没找到(太菜了)。后来询问了一下主程看了一个链接终于搞好了,这是一个原生的socket的客户端。
**
代码实现
**
首先要导入依赖,为了方便处理也导入了一个处理json数据的依赖,如果习惯用别的也可以替换fastjson。
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
创建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;
/**
* websocket客户端监听类
* @author 。
*/
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();
}
}
好啦,到这里就结束啦!!!
对了,原文链接在这里:感谢这位老哥
希望能帮到你,如果有错误的话请斧正。
本文详细介绍了如何在不使用Spring框架的情况下,通过原生Java WebSocket库实现实时通信,并配合Fastjson处理JSON数据。从依赖引入、WebSocketClient类创建到主函数启动,一步步教你搭建WebSocket客户端。

1667

被折叠的 条评论
为什么被折叠?



