Browse Source

set up tcp server to test communication with nestjs TCP

enzo 1 week ago
parent
commit
65534930bf

+ 47 - 28
src/main/java/com/example/ClientHandler.java

@@ -1,10 +1,15 @@
 package com.example;
 
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
 import java.net.Socket;
+
 import org.json.JSONObject;
 
 public class ClientHandler implements Runnable {
+
     private final Socket socket;
 
     public ClientHandler(Socket socket) {
@@ -13,46 +18,60 @@ public class ClientHandler implements Runnable {
 
     @Override
     public void run() {
-        try (
-            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
-            PrintWriter out = new PrintWriter(socket.getOutputStream(), true)
-        ) {
+        BufferedReader in = null;
+        PrintWriter out = null;
+
+        try {
+            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+            out = new PrintWriter(socket.getOutputStream(), true);
+
+            System.out.println("Client connected: " + socket.getInetAddress());
+
             String rawMessage;
             while ((rawMessage = in.readLine()) != null) {
-                System.out.println("Received: " + rawMessage);
+                System.out.println("📨 Received: " + rawMessage);
 
                 String response = handleEvent(rawMessage);
+                System.out.println("📤 Responding: " + response);
                 out.println(response);
             }
+
+            System.out.println("Client disconnected: " + socket.getInetAddress());
+
         } catch (IOException e) {
             System.err.println("Client handler error: " + e.getMessage());
+        } finally {
+            try {
+                if (in != null) in.close();
+                if (out != null) out.close();
+                socket.close();
+            } catch (IOException e) {
+                System.err.println("Error closing client socket: " + e.getMessage());
+            }
         }
     }
 
     private String handleEvent(String rawMessage) {
         try {
-            JSONObject json = new JSONObject(rawMessage);
-            String pattern = json.getString("pattern");
-            String data = json.optString("data", "");
-
-            return switch (pattern) {
-                case "eventTest" -> handleEventTest(data);
-                case "matchFingerprint" -> handleMatchFingerprint(data);
-                default -> "Unknown pattern: " + pattern;
-            };
-        } catch (Exception e) {
-            return "Invalid message format: " + e.getMessage();
-        }
-    }
+            JSONObject message = new JSONObject(rawMessage);
 
-    private String handleEventTest(String message) {
-        System.out.println("Hello there. Just responding to EventPattern.");
-        System.out.println("Message: " + message);
-        return "eventTest acknowledged";
-    }
+            String pattern = message.optString("pattern", "unknown");
+            JSONObject data = message.optJSONObject("data");
+
+            // You could use pattern to route logic
+            String resultMessage = "Received pattern: " + pattern + ", data: " + (data != null ? data.toString() : "null");
 
-    private String handleMatchFingerprint(String data) {
-        System.out.println("Received fingerprint match request (not implemented).");
-        return "matchFingerprint handler stub";
+            // Build response
+            JSONObject response = new JSONObject();
+            response.put("pattern", pattern);
+            response.put("result", resultMessage);
+
+            return response.toString();
+
+        } catch (Exception e) {
+            JSONObject error = new JSONObject();
+            error.put("error", "Invalid message format: " + e.getMessage());
+            return error.toString();
+        }
     }
-}
+}

+ 2 - 3
src/main/java/com/example/Main.java

@@ -2,8 +2,7 @@ package com.example;
 
 public class Main {
     public static void main(String[] args) {
-        int port = 5000;
-        TCPServer.startServer(port);
-        TCPClient.startClient("0.0.0.0", 3003);
+        TCPServer.startServer(3005);
+        // TCPClient.startClient("127.0.0.1", 3003);
     }
 }

+ 15 - 11
src/main/java/com/example/TCPClient.java

@@ -6,29 +6,33 @@ import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.net.Socket;
 
+import org.json.JSONObject;
+
+/* Please ignore this client java for now. */
 public class TCPClient {
 
-    // Separate method for starting the client
     public static void startClient(String serverAddress, int port) {
         try {
-            // Create a socket to connect to the server
             Socket socket = new Socket(serverAddress, port);
             System.out.println("Connected to server at " + serverAddress + ":" + port);
 
-            // Create input and output streams to send/receive data
             BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
             PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
 
-            // Send a message to the server
-            String message = "Hello, Server!";
-            output.println(message);
-            System.out.println("Sent to server: " + message);
+            // Compose the correct NestJS TCP event structure
+            JSONObject message = new JSONObject();
+            message.put("pattern", "eventTest");
+
+            JSONObject payload = new JSONObject();
+            payload.put("message", "Hello from Java client!");
 
-            // Receive a response from the server
-            String response = input.readLine();
-            System.out.println("Received from server: " + response);
+            message.put("data", payload);
+
+            // Send it
+            output.println(message.toString());
+            System.out.println("Sent to server: " + message);
 
-            // Close the connection
+            // For @EventPattern, no response is expected
             socket.close();
             System.out.println("Connection closed.");
         } catch (IOException e) {

+ 1 - 0
src/main/java/com/example/TCPServer.java

@@ -20,3 +20,4 @@ public class TCPServer {
         }
     }
 }
+