WebSocket Endpoint端点

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

@ServerEndpoint 注解

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

常用注解和方法

@OnOpen:当一个新的WebSocket连接建立时调用。

@OnMessage:当从客户端接收到消息时调用。

@OnClose:当WebSocket连接关闭时调用。

@OnError:当WebSocket连接发生错误时调用。

示例代码

后端
java 复制代码
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 {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("Connection opened: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("Message received: " + message);
        try {
            // 回应客户端
            session.getBasicRemote().sendText("Echo: " + message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("Connection closed: " + session.getId());
    }

    @OnError
    public void onError(Session session, Throwable throwable) {
        System.out.println("Error occurred in session " + session.getId());
        throwable.printStackTrace();
    }
}
前端
html 复制代码
    <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>
相关推荐
Future_yzx1 小时前
基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API
spring boot·websocket·文心一言
仓鼠OO2 小时前
思科交换机telnet配置案例
网络·思科·远程
Andya_net2 小时前
网络安全 | F5-Attack Signatures-Set详解
网络·数据库·web安全
Zfox_4 小时前
HTTP cookie 与 session
linux·服务器·网络·c++·网络协议·http
qq_3927944811 小时前
为什么 TCP 挥手需要有 TIME_WAIT 状态?
网络·网络协议·tcp/ip
闲猫12 小时前
正向代理(动态 IP 代理)和反向代理
网络·网络协议·tcp/ip
一尘之中13 小时前
IPoIB(IP over InfiniBand)数据接收与发送机制详解
网络·tcp/ip·php
hvinsion13 小时前
Python 轻松扫描,快速检测:高效IP网段扫描工具全解析
网络·python·tcp/ip
WTT001115 小时前
C语言中危险函数
大数据·c语言·开发语言·网络·算法·渗透测试·we安全
这猪好帅19 小时前
【Linux网络编程】数据链路层--以太网协议
linux·服务器·网络