Tomcat中WebSocket的使用

eclipse和tomcat8的websocket入门篇 最近笔者在做websocket的调研,本来以为很快就可以写一个demo出来,没想到一拖再拖,这么久了才写出一个demo。在网上找了很多例子,但是总觉得没说清楚。有的例子还很老了,是关于tomcat7的,但是tomcat7关于websocket的有些包已经启用,无法使之编译通过。还有的例子是关于jetty之类的其他服务器,由于tomcat使用比较广泛,所以在此笔者只调研了tomcat8的demo。我 阅读详情

创建一个简单的Web项目,后端代码

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;

@ServerEndpoint("/test")
public class SendMessageWebSocket {

    private Session session;

    private static final Set<SendMessageWebSocket> connections = new CopyOnWriteArraySet<>();

    static {
        new Thread(() -> {
            while (true) {
                for (SendMessageWebSocket connection : connections) {
                    try {
                        connection.session.getBasicRemote().sendText("你好,客户端!");
                        Thread.sleep(10000L);
                        // int i = 1 / 0;
                    } catch (Exception e) {
                        System.out.println("出现异常");
                        connections.remove(connection);
                        try {
                            connection.session.close();
                        } catch (IOException ioException) {
                            ioException.printStackTrace();
                        }
                    }
                }
            }
        }).start();
    }

    @OnOpen
    public void onOpen(Session session, EndpointConfig config) {
        this.session = session;
        connections.add(this);
        System.out.println("编号[" + session.getId() + "]" + "已连接");
    }

    @OnClose
    public void onClose(Session session, CloseReason closeReason) {
        connections.remove(this);
        System.out.println("编号[" + session.getId() + "]" + "已关闭");
    }

    @OnError
    public void onError(Session session, Throwable throwable) {
        System.out.println("onError" + throwable.getMessage());
    }

    @OnMessage
    public void echoTextMessage(Session session, String msg, boolean last) {
        System.out.println("收到消息:" + msg);
    }

}

前端代码

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>WebSocket推送消息</title>
</head>
<body>
<input id="message" type="text" value="编辑消息"><br>
<button onclick="sendMsg()">发送</button>
<script>
    var ws = null;
    var target = "ws://127.0.0.1:8080/websocket/test";

    function connect() {
        ws = new WebSocket(target);
        ws.onopen = function () {
            console.log("已连接至服务器");
        };
        ws.onmessage = function (event) {
            console.log("收到服务器消息:" + event.data)
        };
        ws.onclose = function () {
            console.log("服务器连接已断开");
            connect();//断开继续连接
        };
        ws.onerror = function (event) {
            alert("onerror:" + event);
        };
    }

    function sendMsg() {
        ws.send(document.getElementById('message').value);
    }

    window.onload = function () {
        connect();
    }
</script>
</body>
</html>

Tomcat如何实现WebSocket WebSocket协议属于HTML5标准,越来越多浏览器已经原生支持WebSocket,它能让客户端和服务端实现双向通信。在客户端和服务器端建立一条WebSocket连接后,服务器端消息可直接发送到客户端,从而打破传统的请求响应模式,避免了无意义的请求。比如传统的方式可能会使用AJAX不断请求服务器端,而WebSocket则可以直接发送数据到客户端且客户端不必请求。同时,由于有了浏览器的原生支持,编 阅读详情

相关推荐

汽车诊断之UDS入门-0x19 0x0A服务

0x19 0x0A解析

weixin_44842720的博客 3836

基于Tomcat7的websocket的应用实现

这几天想做一个单对单的在线聊天模块,所以研究了一下websocket,以下就来分享一下基于tomcat7的websocket实现的小例子。 1.WebSocket是什么 WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。 它摒弃了以轮询为主要方式的传统的即时通讯技术,真正实现了一个浏览器与服务器之间的全双...

weixin_30666401的博客 277

IAR下载Linux环境适配:入门级安装指导

详细介绍如何在Linux系统中完成iar下载与环境配置,帮助开发者快速上手IAR集成开发环境,解决常见安装问题,提升开发效率。

weixin_35754676的博客 762

一个基于webSocket实现前后端通信的小demo

#sell 一般的web项目都是前台向后台发送消息,但是有些时候我们也需要从后端向前台发送消息,比如说zfb的回调信息,微信的模板推送消息等,下面通过Eclipse+Tomcat实现一个前后台通信的小demo; 先创建一个web项目  index.jsp写一个简单的页面来显示消息 ``` &lt;%@ page language="java" pageEncoding="UTF-8" %&gt...

coding_zhao的博客 5145

qt实现程序密钥注册功能,MD5加密+AES加密,并实现一台电脑系统一个密钥

qt实现了一个给自己软件加密的功能。 原理是: 需要被注册的软件第一次运行的时候,在系统的注册表里面注册一个键值,如下: 这个值作为生成密钥的用户识别号,然后生成密钥文件key.db,把这个key.db文件放到软件执行目录下,即可完成软件的注册并正常使用软件。 软件第一次打开的界面及密钥生成工具软件界面如下: 将密钥生成工具软件生成的key.db放到软件执行目录下之后,软件即可正常使用,如下图: 代码使用了MD5加密 外加 AES加密, 解密和加密的核心代码如下: QSt.

weixin_43935474的博客 4128

安卓开发工程师在车载项目中的角色与技术实践

本文全面探讨了安卓开发工程师在车载项目中的关键角色,重点分析了技术栈(Kotlin/Java/Gradle)、岗位职责和任职要求。文章详细解读了车载安卓开发的核心技能,包括架构设计、性能优化和缺陷修复,并提供了20个针对性面试问题及答案。特别强调了车载环境的特殊需求,如硬件集成、安全认证和实时性要求。通过技术深度与实践案例的结合,为开发者和企业提供了从需求分析到系统优化的完整指导,旨在提升车载安卓开发的专业水平和招聘效率。

郑伟强dev的专栏 131

websocket之三:Tomcat的WebSocket实现

Tomcat自7.0.5版本开始支持WebSocket,并且实现了Java WebSocket规范(JSR356 ),而在7.0.5版本之前(7.0.2版本之后)则采用自定义API,即WebSocketServlet。本节我们仅介绍Tomcat针对规范的实现。 根据JSR356的规定,Java WebSocket应用由一系列的WebSocket Endpoint组成。Endpoint是一个Jav...

weixin_34283445的博客 674

高通camx hal进程dump日志分析四:Node DumpDebugInfo原理分析

摘要: 本文讲解了高通Camx架构中DumpDebugInfo的原理,重点分析了Node组件的DumpDebugInfo()方法。该方法会输出Node自身调试信息,并调用DumpFenceErrors()接口输出Fence错误信息。具体包括:检查请求队列状态、输出未完成请求的元数据/完成状态/未处理Fence数量等关键信息,以及Fence错误原因(如延迟、未触发、结果失败等)。通过代码注释详细解析了各字段含义,为后续分析Dump异常日志提供理论基础。

783

Tomcat中的WebSocket是如何实现的?

WebSocket是一种长期、双向、实时通信的协议,基于HTTP协议后升级为WebSocket协议Tomcat在处理WebSocket时与HTTP请求有所不同,处理网络通信依旧还是使用EndPoint当请求为HTTP时会使用Http11Processor接卸请求,经过适配器最终交给Container容器处理;当请求为WebSocket时使用UpgradeProcessorInternal,路由到WebSocketContainer容器中的ServerEndPoint处理类进行处理。

关注菜菜的后端私房菜,获取更多技术干货~ 769

深度学习与西储大学轴承数据集(一)

西储大学数据集介绍

weixin_50642818的博客 1万+

MTK(camera篇)Camera整体点亮

本文介绍了在MTK平台上添加新Camera Sensor的驱动开发流程。主要内容包括:1)MTK Camera采用HAL3架构,驱动层主要负责sensor电源控制和寄存器操作;2)详细说明了添加新sensor需要在多个文件中进行的修改,包括设备树配置、内核头文件、驱动列表、电源序列等;3)特别指出需要配置I2C地址表,并导入tuning文件和metadata文件以完善ISP处理流程。文章提供了完整的文件修改清单,涵盖了从内核层到HAL层的完整开发过程,为MTK平台Camera Sensor驱动开发提供了具体

weixin_49303682的博客 361

Tomcat下的WebSocket使用

环境 tomcat 9JDK8带框架的web项目 使用 Jar包的选择 由于网上的教程所使用的包很多很杂,可能一般人看不出到底怎么用,其实选择很简单 J2EE:有j2ee的javaee-api其他:javax.websockettomcat:自带websocket-api 其实另外的两种包都是封装了javax.websocket,由于这里用tomcat,所以直接使用

Wilson的博客 6319

【2026最新版】Open3D(C++)点云处理算法汇总(C++长期更新版)

C++版本Open3D进行点云处理的一些算法使用案例。博客长期更新,最近一次更新时间为:2026年4月11日。

点云侠的博客 1万+

Tomcat中的WebSocket

什么是WebSocket我们知道,Comet是在HTTP单向通信基础上模拟服务器与客户端浏览器的双向通讯,不同的Comet方案存在不同的缺陷,无论是跨浏览器层面还是规范限制。而且因为是一种模拟实现,所以它的效率并不高(如HTTP报头的开销,尤其发送消息较小的情况)。基于这些原因,人们一直试图从规范角度寻找一种标准的替代方案。HTML5提供了一种全新的协议来解决这个问题,这就是WebSocket。它实

边城白衣的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Tomcat Websocket应用实例研究

本文在ubuntu下安装tomcat,通过对tomcat提供的websocket通信的实例的学习,了解了tomcat基于jakarta框架的websocket的不同通信方式,以及tomcat对编程式websocket通信的初始化过程。

wangyulj的专栏 1650

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Tomcat 7的WebSocket实现 下

Tomcat 7的WebSocket实现 下

hffyyg的博客 3188

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何使用Tomcat实现WebSocket即时通讯服务服务端

HTTP协议是“请求-响应”模式,浏览器必须先发请求给服务器,服务器才会响应该请求。即服务器不会主动发送数据给浏览器。

华为云官方博客 6278

基于Tomcat的WebSocket

转自(供自己学习用): http://redstarofsleep.iteye.com/blog/1488639

Lumia10200的专栏 870

tomcat8 + websocket 入门示例

网上针对 websocket 的示例有很多,但大多都是诸如基于 node.js、 tomcat7 等,没有基于tomcat8 的例子, 相比较而言,tomcat8下 websocket 还有有一些变动的,在此将针对 tomcat8 + websocket 最简单的 demo 作介绍。 说是原创,其实也不算是原创,都是借鉴的一些前辈们的文章,然后通过自己实践,写出一些自己遇到的问题。 在此

cdmamata的专栏 7048

对于Tomcat中的websocket的了解

Tomcat自7.0.5版本开始支持WebSocket,并且实现了Java WebSocket规范(JSR356 ),而在7.0.5版本之前(7.0.2版本之后)则采用自定义API,即WebSocketServlet。本节我们仅介绍Tomcat针对规范的实现。 根据JSR356的规定,Java WebSocket应用由一系列的WebSocket Endpoint组成。Endpoint是一个Java...

zjgyjd的博客 820

Tomcat13——webSocket

1. 简介 webSocket是HTML5新增的协议,是一个持久化的协议。它的目的是在浏览器和服务器之间建立一个不受限的双向通信通道。例如:服务器可以在任意时刻向浏览器发送消息。 webSocket的出现,让浏览器和服务器之间可以建立无限制的全双工通信,任何一方都可以主动发消息给对方。wesocket并不是全新的协议,而是利用HTTP协议来建立连接的。 2....

武汉小喽啰 1110

设置tomcat支持websocket

有些tomcat版本可能原生不支持websocket,添加如下配置,设置支持websocket <init-param> <param-name>org.atmosphere.cpr.asyncSupport</param-name> <param-value>org.atmosphere.container.Tomcat7AsyncSupportWithWebSoc

CherishL_的专栏 2485

Apache Tomcat Websocket 教程

WebSocket 是一种计算机通信协议,旨在在 Web 浏览器和 Web 服务器中实现,但它可以被任何客户端或服务器应用程序使用。 WebSocket 协议是一个独立的基于 TCP 的协议。它与 HTTP 的唯一关系是它的握手被 HTTP 服务器解释为升级请求。WebSocket 协议使浏览器和 Web 服务器之间的更多交互成为可能,从而促进了从服务器到服务器的实时数据传输。 这是通过为服务器提供一种无需客户端请求即可向浏览器发送内容的标准化方式,并允许在保持连接打开的同时来回传递消息来实现的。通过.

allway2的博客 3499

Tomcat8实现WebSocket

Tomcat8实现WebSocketapi后台服务端代码前段页面 api 引入Tomcat下websocket-api.jar 后台服务端代码 package com.fh.controller.app.socket; import java.io.IOException; import java.util.Map; import java.util.concurrent.CopyOnWrite...

qq_27933251的博客 784

tomcat7和tomcat8的websocket区别

tomcat8真正支持jsr-356(包含对websocket的支持), tomcat7部分版本的websocket实现不兼容jsr-356。websocket实现tomcat7.x与tomcat8.x有很大差异。在tomcat7中使用websocket需要定义一个servlet,然后继承WebSocketServlet,在tomcat8中使用websocke。出自:http://blog.youkuaiyun.com/liuxiao723846/article/details/46930173 一、tomcat7定义

m0_67391907的博客 654
上一篇: Tomcat支持HTTPS
下一篇: 编译Nginx安装手册
盖了帽
博客等级 码龄8年 17粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值