使用Java WebSocket实现客户端和服务器端双向通信
WebSocket是HTML5引入的一种新的全双工通信协议,允许在单个TCP连接上进行多路数据交换。
以下是一个简单的Java WebSocket客户端和服务器端的例子:
客户端(Java):
import javax.websocket.*;
import java.io.IOException;
@ClientEndpoint(url = "/my-socket"))
public class ClientWebSocket {
@OnOpen
public void onOpen(WebSocketSession session) {
System.out.println("Open! Session: " + session);
// send data or perform other actions
}
@OnMessage
public String onMessage(String message, WebSocketSession session) {
System.out.println("Received! Message: " + message + ", Session: " + session);
// return the received message or perform some action
return message;
}
@OnClose
public void onClose(WebSocketSession session) {
System.out.println("Closed! Session: " + session);
// perform any clean-up tasks
}
// handle exceptions as needed
private void handleIOException(IOException ioe, WebSocketSession session) {
try {
session.close(CloseReason.IO_ERROR));
} catch (Exception e) {
// log the error or take appropriate action
System.out.println("Error closing session due to exception: " + e);
}
ioe.printStackTrace();
}
}
服务器端(Java WebSocket API):
import javax.websocket.*;
import java.io.IOException;
@ServerEndpoint("/my-socket"))
public class ServerWebSocket {
@OnOpen
public void onOpen(WebSocketSession session) {
System.out.println("Open! Session: " + session);
}
@OnMessage
public String onMessage(String message, WebSocketSession session) {
System.out.println("Received! Message: " + message + ", Session: " + session);
// handle the received message or perform any other actions
return "You sent: " + message;
}
@OnClose
public void onClose(WebSocketSession session) {
System.out.println("Closed! Session: " + session);
}
// handle exceptions as needed
private void handleIOException(IOException ioe, WebSocketSession session) {
try {
session.close(CloseReason.IO_ERROR));
} catch (Exception e) {
// log the error or take appropriate action
System.out.println("Error closing session due to exception: " + e);
}
ioe.printStackTrace();
}
}
这个例子中,客户端通过WebSocket连接到服务器端的/my-socket
路径。在服务器端,根据接收到的消息进行响应,并可以处理IO异常等。
还没有评论,来说两句吧...