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>
相关推荐
雪影风痕12 分钟前
华为安全防火墙部署
服务器·网络协议·tcp/ip·网络安全
郝学胜-神的一滴26 分钟前
Linux信号四要素详解:从理论到实践
linux·服务器·开发语言·网络·c++·程序人生
阿干tkl33 分钟前
CentOS Stream 8 网络绑定(Bonding)配置方案
linux·网络·centos
深眸财经1 小时前
汽水音乐崛起的冷思考:抖音「附属业务」能否自立?
网络
-曾牛1 小时前
CSRF跨站请求伪造:原理、利用与防御全解析
前端·网络·web安全·网络安全·渗透测试·csrf·原理解析
孫治AllenSun2 小时前
【Doris】运维命令
运维·服务器·网络
156082072192 小时前
FPGA(采用RGMII接口)逻辑实现千兆网TCP/IP协议栈调试记录
网络协议·tcp/ip·fpga开发
sdszoe49222 小时前
思科ACL技术基础1
网络·思科acl技术
curd_boy3 小时前
IM 顶层设计
websocket·架构·信息与通信
CesareCheung3 小时前
用python写一个websocket接口,并用jmeter压测websocket接口
python·websocket·jmeter