使用Java WebSocket进行实时通信的实战案例
Java WebSocket是一种在客户端和服务器之间提供全双工、低延迟的通信协议。以下是一个简单的WebSocket实战案例,该案例创建了一个简单的聊天室。
- 创建WebSocket服务器端(Server.java)
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
public class Server {
@OnOpen
public void onOpen(Session session) {
System.out.println("Client connected: " + session.getId());
}
@OnMessage
public String onMessage(String message, Session session) {
System.out.println("Received message: " + message);
// 如果是聊天室,可以广播给所有连接的客户端
if ("chat".equals(session.getConstraint())) {
for (Session s : serverManager.getSessions()) {
if (s.isOpen() && !s.equals(session)) {
try {
s.getAsyncRemote().sendText(message, session.getId()));
} catch (Exception e) {
System.out.println("Error while sending message: " + e.getMessage());
}
}
}
}
return "Received: " + message;
}
@OnClose
public void onClose(Session session) {
System.out.println("Client disconnected: " + session.getId());
}
}
- 创建WebSocket客户端(Client.java)
import javax.websocket.ContainerProvider;
import javax.websocket.Session;
public class Client {
private static final String ENDPOINT = "ws://localhost:8080/"; // Replace with your server URL
public static void main(String[] args) {
try {
Session session = ContainerProvider.getContainer().newSession(); // Initialize a new WebSocket session
System.out.println("Connecting to server...");
session.getAsyncRemote().sendText("Hello, WebSocket!", session.getId()); // Send a message to the server
session.close(); // Close the connection when done
} catch (Exception e) {
System.out.println("Error occurred: " + e.getMessage());
}
}
}
- 运行客户端和服务器,即可进行简单的WebSocket通信。
注意:以上示例假设你已经在本地运行了一个8080端口的WebSocket服务器。如果使用不同的服务器配置,请根据实际情况修改URL。
还没有评论,来说两句吧...