Java WebSocket客户端

这篇具有很好参考价值的文章主要介绍了Java WebSocket客户端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java WebSocket客户端

方式一 使用Java-WebSocket

1.依赖

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

2.代码

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * @author zhong
 */
public class MyWebSocketClient extends WebSocketClient {

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

    @Override
    public void onOpen(ServerHandshake data) {
        System.out.println("WebSocket连接已打开。");
    }

    @Override
    public void onMessage(String message) {
        System.out.println("收到消息: " + message);
    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        System.out.println("WebSocket连接已关闭。");
    }

    @Override
    public void onError(Exception ex) {
        System.err.println("WebSocket连接发生错误:" + ex.getMessage());
    }

    /**
     * 连接定时检查
     */
    public void startReconnectTask(long delay,
                                   TimeUnit unit) {
        System.out.println("WebSocket 心跳检查");
        // 以下为定时器,建议使用自定义线程池,或交给框架处理(spring)
        ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
        executorService.scheduleWithFixedDelay(() -> {
            // 检查逻辑:判断当前连接是否连通
            if (!this.isOpen()) {
                System.out.println("WebSocket 开始重连......");
                // 重置连接
                this.reconnect();
                // 以下为错误示范
                //this.close();
                //this.connect();
            }
        }, 0, delay, unit);
    }
	// 测试
    public static void main(String[] args) throws URISyntaxException {
        // 服务地址
        URI uri = new URI("ws:服务地址");
        // 创建客户端
        MyWebSocketClient myWebSocketClient = new MyWebSocketClient(uri);
        // 建立连接
        myWebSocketClient.connect();
        // 开启 定时检查
        myWebSocketClient.startReconnectTask(5, TimeUnit.SECONDS);
    }
}

方式二 spring-boot-starter-websocket

1.依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

2.代码

2.1 自定义 websocket handler

public class ClientWebSocketHandler implements WebSocketHandler {
    public static final Logger logger = LoggerFactory.getLogger(ClientWebSocketHandler.class);

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        logger.info("客户端连接成功:{}", session.getId());
    }

    @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        logger.info("客户端接受到消息:{}", message.getPayload());
    }

    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        logger.info("客户端发送错误:{}", exception.getMessage());
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
        logger.info("客户端关闭连接:{}", closeStatus.getCode());
    }

    @Override
    public boolean supportsPartialMessages() {
        return false;
    }
}

2.2 将websocket handler加入容器

@Configuration
public class WebSocketClientConfig {
    @Bean
    public WebSocketClient webSocketClient() {
        return new StandardWebSocketClient();
    }

    @Bean
    public ClientWebSocketHandler clientWebSocketHandler() {
        return new ClientWebSocketHandler();
    }

    @Bean
    public WebSocketConnectionManager connectionManager() {
        WebSocketConnectionManager connectionManager = new WebSocketConnectionManager(
                webSocketClient(),
                clientWebSocketHandler(),
                "连接地址"
        );
        connectionManager.setAutoStartup(true);
        return connectionManager;
    }
}

2.3 定时器监控

@EnableScheduling
@SpringBootApplication
public class WebsocketClientApplication {
    @Resource
    private WebSocketConnectionManager connectionManager;

    public static void main(String[] args) {
        SpringApplication.run(WebsocketClientApplication.class, args);
    }
    @Scheduled(fixedRate = 5000)
    public void reconnectTask() {
        System.out.println("心跳检查");
        if(!connectionManager.isConnected()){
            System.out.println("重新连接.....");
            connectionManager.stop();
            connectionManager.start();
        }
    }

}

文章来源地址https://www.toymoban.com/news/detail-596371.html

到了这里,关于Java WebSocket客户端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java实现WebSocket客户端&&断线重连机制

    1、引入maven依赖(注意版本) 2、代码

    2024年02月16日
    浏览(48)
  • Java实现WebSocket客户端和服务端(简单版)

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 写在前面: WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket通信协议于

    2024年02月08日
    浏览(48)
  • java webSocket服务端、客户端、心跳检测优雅解决

    项目分为三个端,项目之间需要webSocket通信。 WebSocketConfig WebSocketServer

    2024年02月17日
    浏览(41)
  • java-websocket服务端、客户端及如何测试

    1. 导入依赖 2. 服务端实现 (1)基础版 (2)优化版 对String分片转换为Listbyte[] 3. 客户端实现 4. websocket服务端测试方法 (1)自己编写一个客户端 ​ 使用上面的java客户端就可以直接调用测试。 (2)使用postman测试 ​ postman版本需要在v8.0以上才有websocket的接口测试

    2024年02月11日
    浏览(52)
  • 【netty】java如何作为websocket客户端 对服务端发起请求

    是的 本文介绍java如何作为客户端 发起websocket请求 博主不做标题党 不会服务端客户端分不清就写个标题 乱写文章 为什么会使用java作为websocket客户端? 虽说websocket协议 本意是web与服务端之间的通讯协议,那假设有一天 我们的供应商 或者是甲方大爷 只提供了websocket接口呢?

    2024年02月05日
    浏览(50)
  • Java:SpringBoot整合WebSocket实现服务端向客户端推送消息

    思路: 后端通过websocket向前端推送消息,前端统一使用http协议接口向后端发送数据 本文仅放一部分重要的代码,完整代码可参看github仓库 websocket 前端测试 :http://www.easyswoole.com/wstool.html 依赖 项目目录 完整依赖 配置 WebSocketServer.java 前端页面 websocket.html 前端逻辑 index.js 参

    2024年02月04日
    浏览(53)
  • java后端使用websocket实现与客户端之间接收及发送消息

    客户端请求websocket接口,连接通道=》我这边业务成功客户端发消息=》客户端自动刷新。 接口:ws://localhost:8080/websocket/xx 经测试,成功 如果是线上服务器连接,则需要在nginx里配置websocket相关内容,再重启nginx,代码如下 本地连接的时候用的是ws://,因为是http链接,但是如果是

    2024年02月16日
    浏览(46)
  • 【Java】SpringBoot快速整合WebSocket实现客户端服务端相互推送信息

    目录 什么是webSocket? webSocket可以用来做什么? WebSocket操作类 一:测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 3.进行测试消息推送 4.后端进行查看测试结果 二:测试服务端向客户端推送消息 1.接口代码 2.使用postman进行调用 3.查看测试结果         WebSocke

    2024年01月20日
    浏览(61)
  • 做个小工具-WebSocket客户端

    由于工作的原因经常需要用到一些socket,串口等调试工具,但是好多工具要么只有其中几个或者各种收费,不断提醒捐助等。所以还是自己做一个吧。毕竟也不复杂。今天先做个WebSocket客户端。WebSocket使用了开源组件WatsonWebsocket。 先上图 View的代码 ViewModel的代码 servervice的代

    2024年02月15日
    浏览(36)
  • Java 构建websocket客户端,构建wss客户端,使用wss连接,并发送数据到服务器端,接收服务器端消息

    Java 构建websocket客户端,构建wss客户端,使用wss连接,并发送数据到服务器端,接收服务器端消息 回调函数处理

    2024年02月13日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包