使用Java WebSocket进行实时通信示例

原创 一时失言乱红尘 2024-12-05 14:15 176阅读 0赞

在Java中,WebSocket是一种提供全双工、有序、可连接的通信机制的技术。以下是一个简单的WebSocket服务器和客户端示例:

Server端(SocketServer.java):

  1. import java.io.IOException;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4. import javax.websocket.OnClose;
  5. import javax.websocket.OnMessage;
  6. import javax.websocket.OnOpen;
  7. import javax.websocket.Session;
  8. public class SocketServer {
  9. private ServerSocket serverSocket;
  10. public SocketServer(int port) throws IOException {
  11. serverSocket = new ServerSocket(port);
  12. System.out.println("WebSocket Server started on port " + port);
  13. }
  14. @OnOpen
  15. public void onOpen(Session session) {
  16. System.out.println("WebSocket connection established with client");
  17. }
  18. @OnMessage
  19. public String onMessage(String message) {
  20. System.out.println("Received message from client: " + message);
  21. // 这里你可以根据需要处理消息,比如发送回执
  22. return "Server received message: " + message;
  23. }
  24. @OnClose
  25. public void onClose(Session session) {
  26. System.out.println("WebSocket connection closed with client");
  27. }
  28. public void stopServer() throws IOException {
  29. serverSocket.close();
  30. System.out.println("WebSocket Server stopped");
  31. }
  32. }

Client端(WebSocketClient.java):

  1. import javax.websocket.ContainerProvider;
  2. import javax.websocket.Session;
  3. public class WebSocketClient {
  4. private static final ContainerProvider PROVIDER = ContainerProvider.getApplicationInstance();
  5. public void connectToServer(String url) {
  6. try (Session session = PROVIDER.connectToServer(Session.class, url)))) {
  7. System.out.println("Connected to WebSocket Server at " + url);
  8. // 你可以在会话中发送消息或接收消息
  9. session.getBasicRemote().sendText("Hello, WebSocket Server!");
  10. // 在这里处理服务器返回的消息
  11. String response = session.getBasicRemote().recvText();
  12. System.out.println("Received response from server: " + response);
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. System.out.println("Failed to connect to WebSocket Server.");
  16. }
  17. }
  18. public void disconnectFromServer(Session session) {
  19. try {
  20. session.close();
  21. System.out.println("Disconnected from WebSocket Server successfully.");
  22. } catch (IOException e) {
  23. e.printStackTrace();
  24. System.out.println("Failed to disconnect from WebSocket Server.");
  25. }
  26. }
  27. }

在这个示例中,服务器端使用javax.websocket.server.ServerContainer来提供WebSocket服务。客户端通过创建Session对象并调用方法来与服务器进行通信。

注意:在实际开发中,你可能需要处理更复杂的业务逻辑,包括但不限于用户认证、消息持久化等。

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

发表评论

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

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

相关阅读