websocket 无法连接 onerror

SpringBoot+WebSocket实时监控异常 写在前面 此异常非彼异常,标题所说的异常是业务上的异常。 最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。 因为需要服务端主动向客户端发送消息,所以很容易的就想到了用WebSocket来实现这一功能。 WebSocket就不做介绍了,上链接:https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket 前端略微复杂,需要在一张位置分布图上进行鼠标描 阅读详情

在写ws时一定要加上项目名称 byteslounge 在加上websocket的路径名websocket才能请求的到 例如:

ws://localhost:8080/byteslounge/websocket

实例:

1. WebSocket服务器端

让我们定义一个 Java EE websocket服务器端:

WebSocketTest.java

package com.byteslounge.websockets;

import java.io.IOException;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket")
public class WebSocketTest {

  @OnMessage
  public void onMessage(String message, Session session) 
    throws IOException, InterruptedException {
  
    // Print the client message for testing purposes
    System.out.println("Received: " + message);
  
    // Send the first message to the client
    session.getBasicRemote().sendText("This is the first server message");
  
    // Send 3 messages to the client every 5 seconds
    int sentMessages = 0;
    while(sentMessages < 3){
      Thread.sleep(5000);
      session.getBasicRemote().
        sendText("This is an intermediate server message. Count: " 
          + sentMessages);
      sentMessages++;
    }
  
    // Send a final message to the client
    session.getBasicRemote().sendText("This is the last server message");
  }
  
  @OnOpen
  public void onOpen() {
    System.out.println("Client connected");
  }

  @OnClose
  public void onClose() {
    System.out.println("Connection closed");
  }
}

你可能已经注意到我们从 javax.websocket包中引入了一些类。

@ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端。注解的值将被用于监听用户连接的终端访问URL地址。

onOpen 和 onClose 方法分别被@OnOpen和@OnClose 所注解。这两个注解的作用不言自明:他们定义了当一个新用户连接和断开的时候所调用的方法。

onMessage 方法被@OnMessage所注解。这个注解定义了当服务器接收到客户端发送的消息时所调用的方法。注意:这个方法可能包含一个javax.websocket.Session可选参数(在我们的例子里就是session参数)。如果有这个参数,容器将会把当前发送消息客户端的连接Session注入进去

本例中我们仅仅是将客户端消息内容打印出来,然后首先我们将发送一条开始消息,之后间隔5秒向客户端发送1条测试消息,共发送3次,最后向客户端发送最后一条结束消息。

2. 客户端

现在我们要来写websocket测试应用的客户端:

page.html

<!DOCTYPE html>
<html>
<head>
<title>Testing websockets</title>
</head>
<body>
  <div>
    <input type="submit" value="Start" onclick="start()" />
  </div>
  <div id="messages"></div>
  <script type="text/javascript">
    var webSocket = 
      new WebSocket('ws://localhost:8080/byteslounge/websocket');

    webSocket.onerror = function(event) {
      onError(event)
    };

    webSocket.onopen = function(event) {
      onOpen(event)
    };

    webSocket.onmessage = function(event) {
      onMessage(event)
    };

    function onMessage(event) {
      document.getElementById('messages').innerHTML 
        += '<br />' + event.data;
    }

    function onOpen(event) {
      document.getElementById('messages').innerHTML 
        = 'Connection established';
    }

    function onError(event) {
      alert(event.data);
    }

    function start() {
      webSocket.send('hello');
      return false;
    }
  </script>
</body>
</html>

这是一个简单的页面,包含有JavaScript代码,这些代码创建了一个websocket连接到websocket服务器端。

onOpen 我们创建一个连接到服务器的连接时将会调用此方法。

onError 当客户端-服务器通信发生错误时将会调用此方法。

onMessage 当从服务器接收到一个消息时将会调用此方法。在我们的例子中,我们只是将从服务器获得的消息添加到DOM。

我们连接到websocket 服务器端,使用构造函数 new WebSocket() 而且传之以端点URL:

ws://localhost:8080/byteslounge/websocket



转载地址:http://www.oschina.net/translate/java-ee-html5-websocket-example  点击打开链接

SpringBoot+WebSocket实时监控异常,推荐一款技术人必备的接口测试神器 19 margin-top: 15px; 20 width: 20px; 21 height: 20px; 22 border-radius: 50%; 23 background: #55ff00; 24 } 25 .nowI{ 26 background: #ff0000 !important; 27 } 28 阅读详情

相关推荐

SpringBoot+WebSocket实时监控异常!

此异常非彼异常,标题所说的异常是业务上的异常。最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。因为需要服务端主动向客户端发送消息,所以很容易的就想到了用WebSocket来实现这一功能。WebSocket就不做介绍了,上链接:前端略微复杂,需要在一张位置分布图上进行鼠标描点定位各个设备和根据不同屏幕大小渲染,本文不做介绍,只是简单地用页面样式进行效果呈现。绿色代表正常,红色代表异常。

m0_71777195的博客 340

WebSocket :记录WebSocket onError错误用法导致的BUG

目录:目录 项目背景 WebSocket连接流程图 bug复现条件 bug现象 bug原因 解决思路方案项目背景本篇记录WebSocket :用WebSocket实现推送你必须考虑的几个问题 onError错误用法导致的一个bug(同一种client类型只能登陆一个设备,具体代码可以参见 : http://download.youkuaiyun.com/download/shangmingtao/99205

shangmingtao的博客 4万+

SpringBoot——整合WebSocket长连接

WebSocket是用在Web浏览器和服务器之间进行双向数据传输的一种协议,基于TCP

生命的痕迹 2740

websocket拒绝连接的时候,如何把错误信息响应给客户端的onError事件

本文是上一篇文章的补充,所以很多背景以及过程就不再赘述。上一篇是把错误信息通过onMessage事件,在和客户端对接的时候发现,每次都要判断响应报文,对现有的逻辑改动较大。其实,我们本次的需求是在创建ws长连接的时候,把错误提示信息给客户端。所以本文是介绍,如何把错误信息给到onError事件里。

天草二十六 3504

在 JavaScript 中使用 WebSocket,创建 WebSocket 连接

在上述示例代码中,首先使用 new WebSocket 创建了一个 WebSocket 连接,指定了服务器的 URL(这里使用 ws://localhost:8080)。在 JavaScript 中使用 WebSocket,用 WebSocket 对象创建 WebSocket 连接,并使用该对象提供的方法和事件处理程序进行实时通信。WebSocket 连接的创建和事件处理程序的监听是异步的,因此确保在连接建立后才发送消息或进行其他操作。实际需求编写适当的逻辑来处理这些事件。

祈澈菇凉 972

arduino uno spi驱动12864

arduino uno spi驱动12864

yvee的博客 2060

如何捕获新建websocket 的异常

今天看了一眼之前写的前端代码,发现一个明显的问题 try { socket = new WebSocket(host); } catch (e) { reconnect(); } websocket 发生异常, 是catch不到的,因为新建websocket连接是异步的,异常抛出是同步的...

yournevermore的博客 4169

从MC到DC:三维重建算法的核心原理与实战对比

本文深入对比了三维重建领域两大经典算法Marching Cubes(MC)与Dual Contouring(DC)的核心原理与实战表现。MC算法原理直观、实现简单,但存在特征丢失和二义性问题;DC算法通过求解二次误差函数(QEF)和利用法向量信息,能更好地保留模型的尖锐特征,但计算更复杂。文章结合医学影像处理实例,为开发者根据速度、精度和特征保真度需求选择合适算法提供了清晰指南。

weixin_29251131的博客 1032

javax.websocket.Session的一个close异常记录

在使用C websocket客户端向Tomcat 8.x的websocket服务器发送消息时,当客户端关闭连接后,tomcat会出现如下异常,即使捕捉异常也无济于事。 异常: 十二月 10, 2015 4:38:07 下午 org.apache.tomcat.websocket.pojo.PojoEndpointBase onError 严重: No error handling config

Sunshine的专栏 2万+

用workbuddy自定义Skill:手把手搭建AI炒股分析助手

AI Agent正成为个人投资研究的重要工具,而Skill作为行为规范,能让AI输出保持稳定与专业。在AI Agent应用中,很多人分不清Skill与Agent的区别:Agent负责目标拆解与执行,Skill则固化分析流程与输出模板。借助本地工作台workbuddy,用户可自定义Skill,实现从市场环境检查到财务排雷的五段式分析。通过调低温度参数、设定数据验证规则,该方案能有效避免大模型凭空编造数据,帮助个人投资者快速完成基本面体检、资金面观察与风险清单生成。本文基于一套可直接套用的配置与一个月实测,展示

weixin_29038537的博客 515

3.1 计算机视觉的发展和卷积神经网络概要(百度架构师手把手带你零基础实践深度学习原版笔记系列)

3.1 计算机视觉的发展和卷积神经网络(百度架构师手把手带你零基础实践深度学习原版笔记系列) 概要 计算机视觉作为一门让机器学会如何去“看”的科学学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫做机器视觉,其目的是建立能够从图像或者视频中“感知”信息的人工系统。 计算机视觉技术经过几十年的发展,已经在交通(车牌识别、道路违章抓拍)、安防(人脸闸机.

aiAI 691

websocket部署上linux无法访问问题解决,Nginx配置websocket

nginx.conf内容添加如下内容 #自定义变量 $connection_upgrade map $http_upgrade $connection_upgrade { default keep-alive; #默认为keep-alive 可以支持 一般http请求 'websocket' upgrade; #如果为websocket 则为 upgrade 可升级的。 } location /

weixin_43073775的博客 2801

聊聊蓝牙配对技术-CTKD OVER BR/EDR

摘要:本文探讨了蓝牙设备通过跨传输密钥派生(CTKD)机制实现双模连接的技术细节。研究发现,手机在连接双模耳机时优先通过BR/EDR配对,再利用CTKD派生BLE连接所需的密钥。关键条件包括:设备地址一致性、启用安全连接(Secure Connection)及禁用justworks配对方式。文章详细剖析了从BR/EDR链路密钥派生BLE长期密钥(LTK)的算法流程,重点解析了H6/H7加密函数的作用机制与安全差异。研究还通过HCI日志验证了密钥交换和加密建立的完整过程,指出蓝牙5.1版本对CTKD安全性的强

十多年蓝牙协议软件开发,擅长蓝牙协议分析 2691

java onerror_java-如何处理websocket @OnError

除了记录Websocket错误,正确的方法是什么?关于onError,端点documentation指出:Developers may implement this method when the web socket sessioncreates some kind of error that is not modeled in the web socketprotocol. This may ...

weixin_33835122的博客 2941

【云原生技术】SonarQube 生态中PMD插件和P3C插件详细介绍

4. 在项目中如何选择 / 组合 1. 小团队、对《阿里规约》认同度高 → 直接启用 **P3C**,配合 SonarJava 基本够用。 2. 追求全面 Bug/安全检测 + 额外编码规范 → **SonarJava + PMD**(必要时加 P3C 少量规则)。 3. 大型多团队,希望“一本规约”统一风格 → **P3C 为主**,再补充 SonarJava/PMD 的 Bug 与安全规则。 4. 通过 Quality Gate 控制:将 **Blocker/Critical** Bug

weixin_46453070的博客 1364

13. MIC配置

恒玄BES2700,支持3个MIC。

雪飞_海 924

前端WebSocket频繁触发onerror?深入底层协议解读错误成因(仅限内部分享)

解决前端WebSocket频繁触发onerror难题,深入剖析WebSocket的错误成因与底层协议机制,涵盖网络异常、心跳策略与重连优化等关键场景。揭示真实错误类型,提升稳定性,值得收藏。

DebugVibe的博客 910

4、高级认证解决方案:Active Directory、LDAP、RADIUS和TACACS+深度解析

本文深入解析了多种高级认证解决方案,包括Active Directory、标准LDAP、RADIUS和TACACS+,涵盖其技术优势、配置步骤及适用场景。同时介绍了如何实现通用用户管理,包括使用第三方认证解决方案和ADSI自助用户管理。通过实际案例部署,展示了如何高效、安全地管理大规模用户认证与权限控制,为企业安全架构提供参考。

o4p5q6r7s的博客 303

js+Java实现WebSocket连接

JS+JAVA 实现WebSocket连接及服务端向客户端发送消息

weixin_48250399的博客 1793

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

websocket重连

实现websocket重连很简单:只需要知道断网到浏览器约定时限等一些异常情况都会触发onclose和onerror,所以理论上,我们只要在onclose和onerror时,重新创建长连接就可以。 实现websocket重连的代码如下 var webSocketUrl = "ws://localhost:8899/tv/ws"; var ws = new WebSocket(web...

caimaomaocai的博客 1801

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

js连接websocket

/申请一个WebSocket对象,参数是服务端地址,同http协议使用http://开头一样,WebSocket协议的url使用ws://开头,另外安全的WebSocket协议使用wss://开头。本文章向大家介绍js连接websocket,主要包括js连接websocket使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。原文地址:https://www.cnblogs.com/lijiayong/p/14152092.html。//将消息发送到服务端。

m0_70556273的博客 5564

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

前端连接websocket失败_websocket连接失败后多久会触发error事件?

问题描述websocket连接失败后多久会触发error事件?这个时间有没有方法可以设置问题出现的环境背景最近项目中用到了websocket,但是连接地址的端口不确定,因此前端需要从某个端口(例如ws://127.0.0.1:9000)开始累加去建立连接,然后通过onerror事件判断连接是否成功,但运行时发现从尝试连接到连接失败触发error事件的时间比较久,大概需要1s。这样如果枚举100次才...

weixin_39662578的博客 279

在vue中使用WebSocket建立长连接

WebSocket 属性 ws.readyState ( 只读属性 readyState 表示连接状态) 0:表示连接尚未建立。 1:表示连接已建立,可以进行通信。 2:表示连接正在进行关闭。 3:表示连接已经关闭或者连接不能打开。 WebSocket方法 ws.send(); //使用连接发送数据 ws.close(); //关闭socket链接 例: <script> export default { data(){ return {

後来的博客 3934

h5 websocket连接

websocket连接 <html> <head> <script> var ws = new WebSocket("ws://192.168.21.117:8555"); //申请一个WebSocket对象,参数是服务端地址,同http协议使用http://开头一样,WebSocket协议的url使用ws://开头,另外安全的WebSocket协议使用wss://开头 ws.onope

sumimg的博客 1411

Android 连接WebSocket

导入 implementation "org.java-websocket:Java-WebSocket:1.4.0" import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConne...

sinat_28238111的博客 2268

JavaScript 连接 websocket 服务

function TWebSocket(opt) { var that = this; that.isWS = !!window.WebSocket; that.isOpen = false; that.autoConnect = false; that.options = opt; if (that.options.reconnect) that.autoConnect = true; that._connect.call(that); } TW.

梵天一梦 1383
上一篇: nginx安装nginx-rtmp-module视频流媒体播放服务器模块
下一篇: webservice接口和springmvc接口的区别
zhixianjava
博客等级 码龄11年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值