使用Java WebSocket进行实时通信示例
在Java中,WebSocket是一种提供全双工、有序、可连接的通信机制的技术。以下是一个简单的WebSocket服务器和客户端示例:
Server端(SocketServer.java):
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
public class SocketServer {
private ServerSocket serverSocket;
public SocketServer(int port) throws IOException {
serverSocket = new ServerSocket(port);
System.out.println("WebSocket Server started on port " + port);
}
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket connection established with client");
}
@OnMessage
public String onMessage(String message) {
System.out.println("Received message from client: " + message);
// 这里你可以根据需要处理消息,比如发送回执
return "Server received message: " + message;
}
@OnClose
public void onClose(Session session) {
System.out.println("WebSocket connection closed with client");
}
public void stopServer() throws IOException {
serverSocket.close();
System.out.println("WebSocket Server stopped");
}
}
Client端(WebSocketClient.java):
import javax.websocket.ContainerProvider;
import javax.websocket.Session;
public class WebSocketClient {
private static final ContainerProvider PROVIDER = ContainerProvider.getApplicationInstance();
public void connectToServer(String url) {
try (Session session = PROVIDER.connectToServer(Session.class, url)))) {
System.out.println("Connected to WebSocket Server at " + url);
// 你可以在会话中发送消息或接收消息
session.getBasicRemote().sendText("Hello, WebSocket Server!");
// 在这里处理服务器返回的消息
String response = session.getBasicRemote().recvText();
System.out.println("Received response from server: " + response);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Failed to connect to WebSocket Server.");
}
}
public void disconnectFromServer(Session session) {
try {
session.close();
System.out.println("Disconnected from WebSocket Server successfully.");
} catch (IOException e) {
e.printStackTrace();
System.out.println("Failed to disconnect from WebSocket Server.");
}
}
}
在这个示例中,服务器端使用javax.websocket.server.ServerContainer
来提供WebSocket服务。客户端通过创建Session
对象并调用方法来与服务器进行通信。
注意:在实际开发中,你可能需要处理更复杂的业务逻辑,包括但不限于用户认证、消息持久化等。
还没有评论,来说两句吧...