使用Java WebSocket进行实时通信问题

原创 深碍√TFBOYSˉ_ 2024-12-09 16:36 165阅读 0赞

WebSocket是一种在单个TCP连接上进行全双工通信的协议。在Java中,可以使用Java Web Socket API来实现WebSocket通信。

以下是一个简单的示例,展示了如何创建一个WebSocket服务器和客户端:

服务器端(Server.java):

  1. import java.io.IOException;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4. import javax.websocket.OnMessage;
  5. import javax.websocket.OnOpen;
  6. import javax.websocket.Session;
  7. import javax.websocket.server.ServerEndpoint;
  8. @ServerEndpoint("/websocket")
  9. public class Server {
  10. @OnOpen
  11. public void onOpen(Session session) {
  12. System.out.println("Client connected: " + session.getId());
  13. // Send welcome message to client
  14. sendMessage(session, "Welcome to the WebSocket server!"));
  15. }
  16. @OnMessage
  17. public String onMessage(String message, Session session) {
  18. System.out.println("Received message from client: " + message);
  19. // Echo back the message to client
  20. return sendMessage(session, message);
  21. }
  22. private String sendMessage(Session session, String message)) {
  23. try {
  24. session.getBasicRemote().sendText(message);
  25. return "Message sent successfully!";
  26. } catch (IOException e) {
  27. System.out.println("Error sending message: " + e.getMessage());
  28. return "Error sending message!";
  29. }
  30. }
  31. }

客户端(Client.java):

  1. import javax.websocket.OnClose;
  2. import javax.websocket.OnOpen;
  3. import javax.websocket.Session;
  4. public class Client {
  5. public static void main(String[] args) {
  6. // Connect to WebSocket server
  7. connectToServer("localhost", "/websocket"));
  8. // Send message to server
  9. sendMessageToServer("Hello, WebSocket Server!");
  10. }
  11. private static void connectToServer(String host, String path) {
  12. try (Session session = javax.websocket.Container.connectURI(host, path), "Client")) {
  13. System.out.println("Connected to WebSocket server: " + session.getId()));
  14. // Register close listener to handle disconnection
  15. session.addCloseListener(new CloseListener() {
  16. @Override
  17. public void onClose(Session session) {
  18. System.out.println("WebSocket connection closed: " + session.getId()));
  19. }
  20. }));
  21. } catch (Exception e) {
  22. System.out.println("Error connecting to WebSocket server: " + e.getMessage());
  23. }
  24. }
  25. private static void sendMessageToServer(String message) {
  26. try (Session session = javax.websocket.Container.connectURI("localhost", "/websocket"), "Client")) {
  27. System.out.println("Sending message to WebSocket server: " + message);
  28. // Send message using sendText method
  29. session.getBasicRemote().sendText(message);
  30. // Register close listener to handle disconnection
  31. session.addCloseListener(new CloseListener() {
  32. @Override
  33. public void onClose(Session session) {
  34. System.out.println("WebSocket connection closed: " + session.getId()));
  35. }
  36. }));
  37. } catch (Exception e) {
  38. System.out.println("Error sending message to WebSocket server: " + e.getMessage());
  39. }
  40. }
  41. private interface CloseListener {
  42. void onClose(Session session);
  43. }
  44. }

这个例子中,服务器端监听WebSocket连接,并在接收到消息时进行回应。客户端连接到服务器并发送一条消息。

请注意,这个示例需要在运行Java Web Socket服务器的环境中进行。

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

发表评论

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

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

相关阅读