websocket的java客户端,使用Tomcat中的websocket搭建

java webSocket服务端、客户端、心跳检测优雅解决 java、springboot、websocket、心跳检测、客户端、服务端 阅读详情

pom.xml的配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>

客户端的写作:

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Timer;
import java.util.TimerTask;

import javax.websocket.ClientEndpoint;
import javax.websocket.ContainerProvider;
import javax.websocket.DeploymentException;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@ClientEndpoint
public class SocketClient{

	public static Session session;
	public static boolean CLOSED = false;
	private final static Logger LOG = LoggerFactory.getLogger(SocketClient.class);
	static Timer timer = null;
	static Mytask timerTask = null;
	
	@OnOpen
	public void onOpen(Session session1) {
		session = session1;
		heart();
	}
	
	@OnMessage
	public void onMessage(String msg) {
		LOG.info(msg);
		new DealMsg().dealMsg(msg);
	}
	
	@OnError
	public void onError(Throwable t) {
		LOG.info("连接错误的断开");
		t.printStackTrace();
		try {
			connection();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@OnClose
	public void onClose() {
		LOG.info("连接服务器关闭");
		CLOSED = true;
	}
	
	public static void send(String message){
		if (session.isOpen()) {
			LOG.info("send:" + message);
			session.getAsyncRemote().sendText(message);			
		}
    }
	
	public static void close() {
		if (session != null) {
			try {
				session.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void connection() throws DeploymentException, IOException, URISyntaxException {
		WebSocketContainer container = ContainerProvider.getWebSocketContainer(); // 获取WebSocket连接器,其中具体实现可以参照websocket-api.jar的源码,Class.forName("org.apache.tomcat.websocket.WsWebSocketContainer");
		String uri = "连接的服务器地址";
		SocketClient sc = new SocketClient();
		container.connectToServer(sc, new URI(uri));
		CLOSED = false;
	}
	
	// 心跳,每55秒发送一次
	public void heart() {
		timer = new Timer(true);
		timerTask = new Mytask();
		timer.scheduleAtFixedRate(timerTask, 55000, 55000);
	}
	
	// 重置心跳
	public void resetHeart() {
		if (timer != null) {
			if (timerTask != null) {
				timerTask.cancel();
			}
			timerTask = new Mytask();
			timer.scheduleAtFixedRate(timerTask, 0, 55000);
		}
	}
}

class Mytask extends TimerTask {

	@Override
	public void run() {
		//写出自己定时器操作的代码
	}
	
}

 

JAVA使用WebSocket实现多客户端请求 小程序和app端两个服务之间实现聊天通讯,因为介于两个服务,两个客户端,方案实现 阅读详情

相关推荐

SpringBoot 整合websocket客户端代码写法示例

在Java中使用WebSocket技术,有几个库和框架可供选择,其中包括Java API for WebSocket(javax.websocket),以及开源框架如Tomcat WebSocket、Jetty WebSocket等。

洛阳泰山的博客 1605

Java实现websocket客户端

Java实现websocket客户端

qq_38783304的博客 1万+

轴承故障诊断——领域知识

幅域分析、频域分析及轴承方面的领域知识

qq_58516607的博客 3531

JAVA做为客户端连接Websocket之wss

博主对长链接并不是特别熟练,但是什么代码是能正式用的,什么代码上不了生产只是个写着玩的demo 还是一眼能分辨出来的,代码主要参考 git@github.com:yimiancheng/netty-study.git ,写的很不错,代码优化空间很少了, 线程池博主是推荐用new ThreadPoolExecutor()创建,避免OOM的问题,除此之外应该是准生产环境级别代码了。断开连接会进入channelInactive方法(本文中未重写该方法, 在channelInactive方法中重连也是没问题的)

GeeLoong`s Blog 6821

机房电脑的“还原”秘密:如何应对重启即清零的困境

机房电脑重启后自动还原是常见的现象,这主要依靠硬件还原卡或软件还原系统(如冰点还原)实现。这类技术会定期将系统盘恢复初始状态,但通常不保护非系统盘。要高效使用公共电脑,建议:1)将个人文件存储在D/E盘;2)使用绿色便携软件;3)必要时可尝试通过热键临时关闭还原功能;4)养成云端备份习惯。掌握这些技巧既能遵守机房规定,又能保证学习资料安全,培养良好的数字资产管理能力。

一位主要以学校学生信息技术,社会工作生活讲解科普拓展的博主 1445

STM32外部中断与事件机制深度解析:从硬件触发到软件响应

本文深入解析STM32外部中断与事件机制,从硬件触发到软件响应的完整流程。通过对比中断和事件的应用场景、响应速度及配置方法,帮助开发者优化嵌入式系统设计,特别适合需要低功耗或高实时性的项目。

weixin_29175469的博客 407

websocket,使用tomcat7转发

前篇: [url]http://haoningabc.iteye.com/blog/2011985[/url] 代码的git地址 [url]https://github.com/killinux/mysocket/tree/master/websocket/project/tomcat7servlet[/url] 如果是使用tomcat7的模式 1.html是客户端 2.tom...

走在左边 444

AI产品经理必备:Agent评测维度、指标与工程化落地指南

随着大模型从单轮问答走向复杂的Agent应用,如何科学地评测一个Agent是否真正“办成了事”,成为AI产品经理必须掌握的核心能力。与传统大模型评测关注回答质量不同,Agent评测需要综合评估任务规划、工具调用、多轮对话一致性以及失败自愈等行为。任务完成率与工具调用成功率是最关键的两个量化指标,同时还需关注延迟与Token成本等工程约束。在实际落地中,评测集的设计要覆盖业务主流程与边界场景,并通过批量回归测试与版本对比,为产品选型、算法迭代和上线决策提供数据支持。本文系统拆解了Agent评测的完整流程,帮助

weixin_29057163的博客 340

Java现实WebSocket

前言 伴随着HTML5技术的新起,WebSocket 作为一种浏览器与服务器的核心通信技术,被嵌入到了浏览器的内核中。WebSocket 的出现使得浏览器提供对 Socket 的支持成为可能,从而在浏览器和服务器之间提供了一个基于 TCP 连接的双向通道。 所有新的技术都会第一时间在Java社区,出现对应的开源项目!WebSocket也被实现在多种Java的开源库中。WebSocket实现列表

486

18、近端策略优化(PPO)算法详解

本文详细介绍了近端策略优化(PPO)算法的理论基础、算法流程、实现方法及实际应用。PPO作为当前最受欢迎的策略梯度算法之一,具有易于实现、计算成本低、样本效率高和性能优越等优点。文章对比了基于自适应KL惩罚和基于裁剪目标的两种PPO变体,重点解析了裁剪目标函数的设计原理及其在Actor-Critic框架下的实现方式,并通过Atari Pong游戏展示了完整的训练配置与流程。最后总结了PPO的优势、适用场景及未来发展方向,为强化学习研究者和实践者提供了全面的参考。

mongodb5scout的博客 177

AUTOSAR进阶图解==>AUTOSAR_SWS_CANNetworkManagement

本文介绍了AUTOSAR架构中的CAN网络管理(CanNm)模块,主要内容包括: 模块概述:CanNm是协调CAN网络节点状态转换的基础组件,采用去中心化设计,通过周期性发送网络管理PDU保持网络活跃状态,支持网络唤醒、睡眠和部分网络功能。 架构设计:CanNm位于AUTOSAR中间层,连接上层通信管理器(ComM)和底层CAN接口(CanIf),包含状态管理、PDU处理和定时器管理等子组件。 状态机设计:定义了三种主要模式(总线睡眠、准备睡眠和网络模式)及其转换逻辑,网络模式又包含重复消息、正常操作和准备

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2037

使用Tomcat8实现WebSocket的简单例子

关于WebSocket的入门例子。。。

Dream_id的博客 3335

lammps模拟石墨烯吸附水分子(gcmc)

本文分享lammps gcmc吸附的一个案例代码,上下壁面的通道材料为石墨烯,吸附的分子为tip4p水分子。大家好,我是小马老师。

lammps_jiayou的博客 2590

Tomcat7 配置 WebSocket

这是本人第一次写技术性的博客,写的好与不好还请各位多多波波。哈哈~     由于项目的要求需要使用WebSocket,公司的服务器是用C++写的,而我之前是名Java程序员,所以处于好奇变用Tomcat7配置实现了WebSocket的服务端。之前也查阅了很多资料,Tomcat7早先的版本提供了自己的WebSocket API,实现方式是继承WebSocketServlet,但是随着JavaEE

Vanilla Frappuccino 5980

NVIDIA Jetson之交叉编译工具

参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&amp;tid=33630 用TX2做红外热成像仪的识别,厂家不提供源码,只能提供对应版本的SDK,但是需要我们自己提供交叉编译器 由于之前没有做过交叉编译相关工作,对编译工具不太了解,因此查找相关资料学习下 交叉编译知识 一般来说,针对嵌入式平台的开发有两种编译模式:原生编译和交叉编译。原生编...

ZONGXP的博客 8382

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java实现WebSocket聊天

Java现实WebSocket 无所不能的Java系列文章,涵盖了Java的思想,应用开发,设计模式,程序架构等,通过我的经验去诠释Java的强大。 说起Java,真的有点不知道从何说起。Java是一门全领域发展的语言,从基础的来讲有4大块,Java语法,JDK,JVM,第三方类库。官方又以面向不同应用的角度,又把JDK分为JavaME,JavaSE,JavaEE三个部分。Java可以做客

SmartAnt_5658的专栏 1601

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WebSocket 实现之 Tomcat

搞定这个的过程远比想象的困难许多。网上许多教程,一一尝试,大多随着库版本的改变以及浏览器对协议支持的改变以失败告终,即使成功的也语焉不详,以下为步骤。 1. 运行环境 Java EE IDE apache-tomcat-7.0.29(7.0.27之后才支持websocket) IE(版本:10.0.9200.16384) Firefox(版本:15.0) Google Chrome(版...

weixin_34392843的博客 101

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

H5 WebSocket Java 前后台代码

先来个效果 Java代码 package hh; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.websocket.Session; import java.net.InetAddress; import java.util.Map; import java.util.concurren...

王洪洪的博客 281

websocket的Java实现

一.WebSocket简单介绍 WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成握手。   随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏

翻滚啊牛宝宝 752

利用eclipse创建一个建议webSocket项目

工具/环境:eclipse+Tomcat 7.0.85+jdk 1.8 依赖包:javaee-api-8.0.jar 过程: 1)用eclipse创建一个javaweb项目,导入需要的包; 2)创建一个java类,用于WebSocket服务构建,代码如下: package me.gacl.websocket; import java.io.IOException; import ja...

xudasong123的博客 4573

websocket实现android消息推送

前段时间做一个项目,需要android客户端作为管理工具与web服务器后台实时交互,想了很多方法,包括androidpn、openfire+smack、xmpp协议,要么太繁琐,要么无法满足实时性。想来还是用socket,经人提醒想到了websocket。     websocket协议是近些年随html5发展而诞生的,主要用于解决web服务器与客户端无法双向交互的问题。如今已经被W3C

It_BeeCoder的博客 694

websocket-Demo

index页面: <%@ page language="java" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>Java后端WebSocket的Tomcat实现</title> <script> var webs...

weixin_42394137的博客 240

Java8 + Tomcat8 实现Websocket 例子

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34306676的博客 217
上一篇: 富文本编辑ckeditor.js的使用
下一篇: spring自带websocket用于前后台实时交付
shudj
博客等级 码龄9年 4粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值