Browse Source

add websocket server

master
sige 2 years ago
parent
commit
add1eaa12c
  1. 9
      pom.xml
  2. 20
      src/main/java/com/dreamworks/boditech/BoditechApplication.java
  3. 10
      src/main/java/com/dreamworks/boditech/controller/DeviceController.java
  4. 33
      src/main/java/com/dreamworks/boditech/utils/MyWebsocketClient.java
  5. 35
      src/main/java/com/dreamworks/boditech/utils/MyWebsocketServer.java

9
pom.xml

@ -37,6 +37,15 @@
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
<build>

20
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();
}
}

10
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();
}

33
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");
}
}

35
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");
}
}
Loading…
Cancel
Save