Home >Java >javaTutorial >WebSockets and real-time communication in Java network programming
WebSocket is a two-way communication protocol that allows a low-latency, persistent connection between a web client and a server and is widely used to build real-time communication applications such as chat and online games. In Java, you can use the WebSocket API or a third-party library such as Spring WebSocket. Establishing a connection using the WebSocket API involves the following steps: establishing an HTTP connection, handshake, and upgrading to WebSocket. A common use case is building multi-player chat applications where the server endpoint handles messages via a Servlet and clients can connect to the server via JavaScript WebSocket objects and send and receive messages.
WebSocket and real-time communication in Java network programming
WebSocket is a two-way full-duplex communication protocol that allows web clients to Establish a low-latency, persistent connection between the client and the server. It is widely used to build real-time communication applications such as chat, real-time collaboration, and online gaming.
Introduction to WebSocket Protocol
WebSocket is a protocol that runs on top of an HTTP-based protocol (usually WebSocket). Establishing a WebSocket connection involves the following steps:
Using WebSocket in Java
To use WebSocket in Java, you can leverage the Java WebSocket API or a third-party library such as Spring WebSocket. This section explores examples of using the WebSocket API.
// 创建 WebSocket 服务器端点 WebSocketServer ws = new WebSocketServer() { @Override public void onOpen(WebSocket websocket, ClientEndpointConfig cec) { System.out.println("客户端已连接"); } @Override public void onMessage(String message, WebSocket websocket) { System.out.println("收到客户端消息:" + message); } @Override public void onClose(WebSocket websocket) { System.out.println("客户端已断开连接"); } @Override public void onError(WebSocket websocket, Throwable cause) { System.err.println("WebSocket 发生错误:" + cause.getMessage()); } }; ws.start();
// 创建 WebSocket 客户端端点 WebSocketClient wsClient = new WebSocketClient() { @Override public void onOpen(ServerEndpointConfig sec) { System.out.println("连接到服务器"); } @Override public void onMessage(String message, Session session) { System.out.println("收到服务器消息:" + message); } @Override public void onClose(Session session, CloseReason closeReason) { System.out.println("连接已关闭"); } @Override public void onError(Session session, WebSocketError error) { System.err.println("WebSocket 发生错误:" + error.getMessage()); } }; wsClient.open("ws://localhost:8080/websocket");
Practical case: Chat application
Using WebSocket, you can easily build a multi-person chat application. Here is an example:
// 服务器端: @WebServlet("/chat") public class ChatServlet extends HttpServlet { private Set<WebSocket> webSockets = new HashSet<>(); @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) { String message = req.getParameter("message"); for (WebSocket ws : webSockets) { ws.sendString(message); } } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setAttribute("ws", new WebSocket(req, resp)); req.getRequestDispatcher("/chat.jsp").forward(req, resp); } public void onOpen(WebSocket socket) { webSockets.add(socket); } public void onClose(WebSocket socket) { webSockets.remove(socket); } } // 客户端: <script type="text/javascript"> var ws = new WebSocket("ws://localhost:8080/chat"); ws.onopen = function() { console.log("连接已建立"); }; ws.onmessage = function(event) { console.log("收到消息:" + event.data); }; ws.onclose = function() { console.log("连接已关闭"); }; function sendMessage() { var message = document.getElementById("message").value; ws.send(message); } </script>
The above is the detailed content of WebSockets and real-time communication in Java network programming. For more information, please follow other related articles on the PHP Chinese website!