WebSocket Endpoint端点

devtools/2024/11/18 11:56:00/

WebSocket端点(WebSocket Endpoint)是指在WebSocket协议中,服务器和客户端之间的通信通道的终端。在Java中,通常使用 @ServerEndpoint 注解来标识一个类作为WebSocket端点。这个类负责处理客户端的连接、接收消息、发送消息以及处理连接关闭等事件。

@ServerEndpoint 注解

@ServerEndpoint 是Java WebSocket API(JSR 356)提供的注解,用于标记一个类为WebSocket端点。这个注解可以指定端点的路径,以及其他配置信息。

常用注解和方法

@OnOpen:当一个新的WebSocket连接建立时调用。
@OnMessage:当从客户端接收到消息时调用。
@OnClose:当WebSocket连接关闭时调用。
@OnError:当WebSocket连接发生错误时调用。

示例代码

后端
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;//指定WebSocket端点的路径为 /chat。客户端可以通过 ws://yourserver/chat 连接到这个端点。
@ServerEndpoint("/chat")
public class ChatEndpoint {@OnOpenpublic void onOpen(Session session) {System.out.println("Connection opened: " + session.getId());}@OnMessagepublic void onMessage(String message, Session session) {System.out.println("Message received: " + message);try {// 回应客户端session.getBasicRemote().sendText("Echo: " + message);} catch (Exception e) {e.printStackTrace();}}@OnClosepublic void onClose(Session session) {System.out.println("Connection closed: " + session.getId());}@OnErrorpublic void onError(Session session, Throwable throwable) {System.out.println("Error occurred in session " + session.getId());throwable.printStackTrace();}
}
前端
    <input type="text" id="messageInput" /><button onclick="sendMessage()">Send</button><script>var socket = new WebSocket('ws://localhost:8080/chat');socket.onopen = function() {console.log('Connected to server');};socket.onmessage = function(event) {var messagesDiv = document.getElementById('messages');var messageElement = document.createElement('div');messageElement.textContent = event.data;messagesDiv.appendChild(messageElement);};socket.onclose = function() {console.log('Disconnected from server');};function sendMessage() {var input = document.getElementById('messageInput');socket.send(input.value);input.value = '';}</script>


http://www.ppmy.cn/devtools/134949.html

相关文章

【jvm】方法区常用参数有哪些

目录 1. -XX:PermSize2. -XX:MaxPermSize3. -XX:MetaspaceSize&#xff08;Java 8及以后&#xff09;4. -XX:MaxMetaspaceSize&#xff08;Java 8及以后&#xff09;5. -Xnoclassgc6. -XX:TraceClassLoading7.-XX:TraceClassUnLoading 1. -XX:PermSize 1.设置JVM初始分配的永久…

AI大模型(一):Prompt AI编程

一、Prompt Engineering&#xff0c;提示工程 提示工程也叫指令工程&#xff1a; Prompt是发给大模型的指令&#xff0c;比如【讲个睡前故事】、【用Python写个消消乐游戏】等&#xff1b;本质上大模型相关的工程工作&#xff0c;都是围绕prompt展开的&#xff1b;提示工程门…

(干货)Jenkins使用kubernetes插件连接k8s的认证方式

#Kubernetes插件简介 Kubernetes 插件的目的是能够使用 Kubernetes 配合&#xff0c;实现动态配置 Jenkins 代理&#xff08;使用 Kubernetes 调度机制来优化负载&#xff09;&#xff0c;在执行 Jenkins Job 构建时&#xff0c;Jenkins Master 会在 kubernetes 中创建一个 Sla…

面试篇-项目管理

⼀、构建管理 项目为什么选择Maven构建? 选择Maven进行项目构建有以下几个主要原因&#xff1a; 1. 依赖管理&#xff1a;Maven 提供了强大的依赖管理功能&#xff0c;可以自动下载项目所需的第三方库和依赖&#xff0c;并且可以管理这些依赖的版本、范围等信息。这简化了项…

Node.js事件循环:解锁异步编程的奥秘

Node.js的事件循环是实现高性能、异步编程的关键机制。了解Node.js事件循环的工作原理和使用方法对于开发高效的应用程序至关重要。本文将深入介绍Node.js事件循环的原理、阶段和最佳实践&#xff0c;帮助您充分利用这一强大功能。 Node.js事件循环概述 Node.js事件循环是Node…

HTTP 1.0、HTTP 1.1 和 HTTP 2.0 区别

HTTP 1.0、HTTP 1.1 和 HTTP 2.0 是超文本传输协议&#xff08;HTTP&#xff09;不同版本的规范&#xff0c;各自进行了多项更新和改进&#xff1a; 1. HTTP/1.0 单一请求-响应&#xff1a;每次请求都需要建立一个新的 TCP 连接&#xff0c;完成后立即断开。无状态连接&#…

Go 语言切片初始化与性能优化:使用 cap 参数的重要性

在 Go 语言中&#xff0c;切片是一种非常灵活且常用的数据结构&#xff0c;它提供了一种动态数组的抽象。在使用切片时&#xff0c;我们通常会使用 append 函数来添加元素。然而&#xff0c;很少有人意识到在初始化切片时指定其容量&#xff08;capacity&#xff09;可以显著提…

开源物业管理系统助力智能社区提升服务效率与用户体验

内容概要 开源物业管理系统是一种灵活、智能的解决方案&#xff0c;专为社区物业管理而生。随着智能社区的发展&#xff0c;这种系统变得越来越重要。它不仅帮助物业管理者高效地处理日常事务&#xff0c;还提升了居民的生活体验。在这个日新月异的时代&#xff0c;开源物业管…