使用Java WebSocket实现客户端和服务器端双向通信

原创 客官°小女子只卖身不卖艺 2024-12-03 20:42 56阅读 0赞

WebSocket是HTML5引入的一种新的全双工通信协议,允许在单个TCP连接上进行多路数据交换。

以下是一个简单的Java WebSocket客户端和服务器端的例子:

客户端(Java):

  1. import javax.websocket.*;
  2. import java.io.IOException;
  3. @ClientEndpoint(url = "/my-socket"))
  4. public class ClientWebSocket {
  5. @OnOpen
  6. public void onOpen(WebSocketSession session) {
  7. System.out.println("Open! Session: " + session);
  8. // send data or perform other actions
  9. }
  10. @OnMessage
  11. public String onMessage(String message, WebSocketSession session) {
  12. System.out.println("Received! Message: " + message + ", Session: " + session);
  13. // return the received message or perform some action
  14. return message;
  15. }
  16. @OnClose
  17. public void onClose(WebSocketSession session) {
  18. System.out.println("Closed! Session: " + session);
  19. // perform any clean-up tasks
  20. }
  21. // handle exceptions as needed
  22. private void handleIOException(IOException ioe, WebSocketSession session) {
  23. try {
  24. session.close(CloseReason.IO_ERROR));
  25. } catch (Exception e) {
  26. // log the error or take appropriate action
  27. System.out.println("Error closing session due to exception: " + e);
  28. }
  29. ioe.printStackTrace();
  30. }
  31. }

服务器端(Java WebSocket API):

  1. import javax.websocket.*;
  2. import java.io.IOException;
  3. @ServerEndpoint("/my-socket"))
  4. public class ServerWebSocket {
  5. @OnOpen
  6. public void onOpen(WebSocketSession session) {
  7. System.out.println("Open! Session: " + session);
  8. }
  9. @OnMessage
  10. public String onMessage(String message, WebSocketSession session) {
  11. System.out.println("Received! Message: " + message + ", Session: " + session);
  12. // handle the received message or perform any other actions
  13. return "You sent: " + message;
  14. }
  15. @OnClose
  16. public void onClose(WebSocketSession session) {
  17. System.out.println("Closed! Session: " + session);
  18. }
  19. // handle exceptions as needed
  20. private void handleIOException(IOException ioe, WebSocketSession session) {
  21. try {
  22. session.close(CloseReason.IO_ERROR));
  23. } catch (Exception e) {
  24. // log the error or take appropriate action
  25. System.out.println("Error closing session due to exception: " + e);
  26. }
  27. ioe.printStackTrace();
  28. }
  29. }

这个例子中,客户端通过WebSocket连接到服务器端的/my-socket路径。在服务器端,根据接收到的消息进行响应,并可以处理IO异常等。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,56人围观)

还没有评论,来说两句吧...

相关阅读