Java WebSocket
WebSocket 是一种基于 TCP 协议的全双工通信协议,可以实现客户端和服务器之间的实时通信。在 Java 中,我们可以使用 Java API for WebSocket(JSR 356)来实现 WebSocket。
WebSocket API
Java API for WebSocket 提供了一组 API,用于实现 WebSocket。以下是 WebSocket API 中的一些重要类和接口:
-
javax.websocket.Endpoint
:WebSocket 端点,用于处理 WebSocket 连接的生命周期。 -
javax.websocket.Session
:WebSocket 会话,表示客户端和服务器之间的一次连接。 -
javax.websocket.MessageHandler
:WebSocket 消息处理器,用于处理客户端发送的消息。 -
javax.websocket.server.ServerEndpoint
:WebSocket 服务器端点,用于将 WebSocket 端点暴露为一个 URI。
实现 WebSocket 服务器
要实现 WebSocket 服务器,我们需要创建一个类,继承自 javax.websocket.Endpoint
类,并实现它的 onOpen
、onClose
、onError
和 onMessage
方法,分别用于处理 WebSocket 连接的打开、关闭、错误和消息。
以下是一个简单的 WebSocket 服务器的示例代码:
import java.io.IOException;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket")
public class WebSocketServer extends Endpoint {
@Override
public void onOpen(Session session, EndpointConfig config) {
System.out.println("WebSocket connection opened: " + session.getId());
session.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String message) {
System.out.println("Received message: " + message);
try {
session.getBasicRemote().sendText("Server received message: " + message);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
@Override
public void onClose(Session session, CloseReason closeReason) {
System.out.println("WebSocket connection closed: " + session.getId() + " Reason: " + closeReason.getReasonPhrase());
}
@Override
public void onError(Session session, Throwable throwable) {
System.err.println("WebSocket error occurred: " + session.getId());
throwable.printStackTrace();
}
@Override
public void onMessage(Session session, String message) {
System.out.println("Received message: " + message);
try {
session.getBasicRemote().sendText("Server received message: " + message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我们创建了一个 WebSocketServer
类,并使用 @ServerEndpoint("/websocket")
注解将它暴露为 /websocket
URI。在 onOpen
方法中,我们打印出 WebSocket 连接的 ID,并添加一个消息处理器,用于处理客户端发送的消息。在 onClose
和 onError
方法中,我们分别打印出 WebSocket 连接关闭和错误的信息。在 onMessage
方法中,我们打印出接收到的消息,并向客户端发送一个响应消息。
实现 WebSocket 客户端
要实现 WebSocket 客户端,我们可以使用 Java API for WebSocket 提供的 javax.websocket.ContainerProvider
类,通过它的 getWebSocketContainer
方法获取一个 javax.websocket.WebSocketContainer
对象,然后使用它的 connectToServer
方法连接 WebSocket 服务器。
以下是一个简单的 WebSocket 客户端的示例代码:文章来源:https://www.toymoban.com/news/detail-492725.html
import java.net.URI;
import javax.websocket.ClientEndpoint;
import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
import javax.websocket.ContainerProvider;
@ClientEndpoint
public class WebSocketClient {
@OnMessage
public void onMessage(String message) {
System.out.println("Received message: " + message);
}
public static void main(String[] args) throws Exception {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
URI uri = new URI("ws://localhost:8080/websocket");
try (Session session = container.connectToServer(WebSocketClient.class, uri)) {
session.getBasicRemote().sendText("Hello, server!");
}
}
}
在上面的示例中,我们创建了一个 WebSocketClient
类,并使用 @ClientEndpoint
注解将它标记为 WebSocket 客户端。在 onMessage
方法中,我们打印出接收到的消息。在 main
方法中,我们使用 ContainerProvider
类获取一个 WebSocketContainer
对象,并使用它的 connectToServer
方法连接 WebSocket 服务器。在连接成功后,我们向服务器发送一个消息。文章来源地址https://www.toymoban.com/news/detail-492725.html
到了这里,关于Java WebSocket的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!