diff --git a/pom.xml b/pom.xml
index b533a2b..2e2b8d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,15 @@
mysql-connector-j
runtime
+
+ org.java-websocket
+ Java-WebSocket
+ 1.5.4
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
diff --git a/src/main/java/com/dreamworks/boditech/BoditechApplication.java b/src/main/java/com/dreamworks/boditech/BoditechApplication.java
index d9f8989..a87ca89 100644
--- a/src/main/java/com/dreamworks/boditech/BoditechApplication.java
+++ b/src/main/java/com/dreamworks/boditech/BoditechApplication.java
@@ -1,9 +1,29 @@
package com.dreamworks.boditech;
+import com.dreamworks.boditech.utils.MyWebsocketClient;
+import org.java_websocket.client.WebSocketClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+import java.net.URI;
+import java.net.URISyntaxException;
+
@SpringBootApplication
public class BoditechApplication {
public static void main(String[] args) {
SpringApplication.run(BoditechApplication.class, args);
}
+
+ @Bean
+ public WebSocketClient webSocketClient() throws URISyntaxException {
+ URI uri = new URI("wss://ws.postman-echo.com/raw");
+ MyWebsocketClient webSocketClient = new MyWebsocketClient(uri);
+ webSocketClient.connect();
+ return webSocketClient;
+ }
+
+ @Bean
+ public ServerEndpointExporter websocketServerEndpointExporter() {
+ return new ServerEndpointExporter();
+ }
}
diff --git a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java
index 7609d79..50fdd87 100644
--- a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java
+++ b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java
@@ -1,13 +1,23 @@
package com.dreamworks.boditech.controller;
import com.dreamworks.boditech.controller.entity.ApiResponse;
+import com.dreamworks.boditech.utils.MyWebsocketServer;
+import jakarta.annotation.Resource;
+import org.java_websocket.client.WebSocketClient;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class DeviceController extends BaseController {
+ @Resource
+ private WebSocketClient webSocketClient;
+
+ @Resource
+ private MyWebsocketServer websocketServer;
+
@ResponseBody
@PostMapping("/api/device/start")
public ApiResponse start() {
+ webSocketClient.send("hello sever,i want subscribe data A");
return this.success();
}
diff --git a/src/main/java/com/dreamworks/boditech/utils/MyWebsocketClient.java b/src/main/java/com/dreamworks/boditech/utils/MyWebsocketClient.java
new file mode 100644
index 0000000..5287431
--- /dev/null
+++ b/src/main/java/com/dreamworks/boditech/utils/MyWebsocketClient.java
@@ -0,0 +1,33 @@
+package com.dreamworks.boditech.utils;
+import org.java_websocket.client.WebSocketClient;
+import org.java_websocket.handshake.ServerHandshake;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.net.URI;
+public class MyWebsocketClient extends WebSocketClient {
+ private static final Logger LOG = LoggerFactory.getLogger(MyWebsocketClient.class);
+
+ public MyWebsocketClient(URI uri ) {
+ super(uri);
+ }
+
+ @Override
+ public void onOpen(ServerHandshake serverHandshake) {
+ LOG.info("on open");
+ }
+
+ @Override
+ public void onMessage(String s) {
+ LOG.info("on message");
+ }
+
+ @Override
+ public void onClose(int i, String s, boolean b) {
+ LOG.info("on close");
+ }
+
+ @Override
+ public void onError(Exception e) {
+ LOG.info("on error");
+ }
+}
diff --git a/src/main/java/com/dreamworks/boditech/utils/MyWebsocketServer.java b/src/main/java/com/dreamworks/boditech/utils/MyWebsocketServer.java
new file mode 100644
index 0000000..8e95c18
--- /dev/null
+++ b/src/main/java/com/dreamworks/boditech/utils/MyWebsocketServer.java
@@ -0,0 +1,35 @@
+package com.dreamworks.boditech.utils;
+import jakarta.websocket.*;
+import jakarta.websocket.server.ServerEndpoint;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+@ServerEndpoint("/ws")
+public class MyWebsocketServer {
+ private static final Logger LOG = LoggerFactory.getLogger(MyWebsocketClient.class);
+
+ private Session session;
+
+ @OnOpen
+ public void onOpen(Session session) {
+ this.session = session;
+ LOG.info("ws server : on open");
+ }
+
+ @OnClose
+ public void onClose() {
+ LOG.info("ws server : on close");
+ }
+
+ @OnMessage
+ public void onMessage(String message) {
+ LOG.info("ws server : on message > " + message);
+ }
+
+ @OnError
+ public void onError(Session session, Throwable error) {
+ LOG.info("ws server : on error");
+ }
+}