From 2abdf60f37986a4fcb15a412109145a3a89c72ed Mon Sep 17 00:00:00 2001 From: zhangmeng <1334717033@qq.com> Date: Tue, 13 Jun 2023 14:30:33 +0800 Subject: [PATCH] =?UTF-8?q?2023=E5=B9=B46=E6=9C=8813=E6=97=A514:30:12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/controller/HomeController.java | 4 + .../controller/ServerToolsController.java | 33 ++++ .../controller/WebSocketClientController.java | 147 ++++++++++++++++++ .../zhangmeng/tools/utils/ResourcesUtils.java | 1 + src/main/resources/fxml/home.fxml | 1 + src/main/resources/fxml/load-start.fxml | 2 +- src/main/resources/fxml/server-tools.fxml | 1 + src/main/resources/fxml/websocket-client.fxml | 24 +++ src/main/resources/static/bgimg/bg_3.jpg | Bin 0 -> 613482 bytes 9 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/zhangmeng/tools/controller/WebSocketClientController.java create mode 100644 src/main/resources/fxml/websocket-client.fxml create mode 100644 src/main/resources/static/bgimg/bg_3.jpg diff --git a/src/main/java/com/zhangmeng/tools/controller/HomeController.java b/src/main/java/com/zhangmeng/tools/controller/HomeController.java index 33230ab..12f4802 100644 --- a/src/main/java/com/zhangmeng/tools/controller/HomeController.java +++ b/src/main/java/com/zhangmeng/tools/controller/HomeController.java @@ -598,4 +598,8 @@ public class HomeController implements Serializable { public void file_edit_menu_item(ActionEvent event) { load_small_tools(16); } + + public void web_socket_client_menu_item(ActionEvent event) { + load_server_tools(8); + } } \ No newline at end of file diff --git a/src/main/java/com/zhangmeng/tools/controller/ServerToolsController.java b/src/main/java/com/zhangmeng/tools/controller/ServerToolsController.java index 2e98f89..87392ff 100644 --- a/src/main/java/com/zhangmeng/tools/controller/ServerToolsController.java +++ b/src/main/java/com/zhangmeng/tools/controller/ServerToolsController.java @@ -47,6 +47,7 @@ public class ServerToolsController { private AnchorPane socket_client_nio; private AnchorPane socket_server_aio; private AnchorPane socket_server_nio; + private AnchorPane web_socket_client; public static final String color_cell = "#f4f4f4"; @@ -308,6 +309,12 @@ public class ServerToolsController { } socket_client_nio(flag); } + if (newValue.getIndex() == 8){ + if (web_socket_client != null){ + flag = true; + } + web_socket_client(flag); + } } }); } @@ -448,6 +455,7 @@ public class ServerToolsController { case Socket_server_aio -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY)); case Socket_server_nio -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY)); case Socket_client_nio -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY)); + case Web_Socket_client -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY)); }; } @@ -683,8 +691,33 @@ public class ServerToolsController { } public void json_javabean_gen_menu_item(ActionEvent event) { + load_sql_tools(2); } public void sql_query_gen_menu_item(ActionEvent event) { + load_sql_tools(3); + } + + public void web_socket_client_menu_item(ActionEvent event) { + boolean flag = false; + if (web_socket_client != null){ + flag =true; + } + web_socket_client(flag); + } + + private void web_socket_client(boolean flag) { + listView.getSelectionModel().select(8); + if (!flag){ + try { + root = FXMLLoader.load(ResourcesUtils.getResource("websocket-client")); + } catch (IOException e) { + e.printStackTrace(); + } + web_socket_client = root; + }else { + root = web_socket_client; + } + common_method(); } } diff --git a/src/main/java/com/zhangmeng/tools/controller/WebSocketClientController.java b/src/main/java/com/zhangmeng/tools/controller/WebSocketClientController.java new file mode 100644 index 0000000..f877b71 --- /dev/null +++ b/src/main/java/com/zhangmeng/tools/controller/WebSocketClientController.java @@ -0,0 +1,147 @@ +package com.zhangmeng.tools.controller; + +import com.zhangmeng.tools.utils.AlertUtils; +import javafx.application.Platform; +import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import lombok.extern.slf4j.Slf4j; +import org.java_websocket.WebSocket; +import org.java_websocket.client.WebSocketClient; +import org.java_websocket.drafts.Draft_6455; +import org.java_websocket.enums.ReadyState; +import org.java_websocket.handshake.ServerHandshake; + +import java.net.URI; + +/** + * @author : 芊芊墨客 + * @version : 1.0 + * @date : 2023-06-13 10:56 + */ +@Slf4j +public class WebSocketClientController { + + @FXML + public TextField ip; + + @FXML + public TextField port; + + @FXML + public Button conn; + + @FXML + public Button send; + + @FXML + public TextField content; + + @FXML + public TextField params; + + @FXML + private TextArea show_result; + + private WebSocketClient webSocketClient; + + public static ObservableList message_list = FXCollections.observableArrayList(); + + @FXML + public void initialize() { + + if (ip.getText().length() == 0){ + ip.setText("localhost"); + } + + if (port.getText().length() == 0){ + port.setText("3333"); + } + + if (params.getText().length() == 0){ + params.setText("/websocketchart?userId=1&source=pc"); + } + + conn.setOnAction(event -> { + getConnection(); + }); + + message_list.addListener((ListChangeListener) c -> { + while (c.next()) { + if (c.wasAdded()) { + StringBuilder stringBuilder = new StringBuilder(); + for (String s : message_list) { + stringBuilder.append(s); + } + receive(stringBuilder.toString()); + } + } + }); + + send.setOnAction(event -> { + webSocketClient.send(content.getText()); + }); + } + + public void receive(String msg) { + Platform.runLater(() -> { + this.show_result.setText(msg); + }); + } + + + private void getConnection() { + if (webSocketClient == null) { + webSocketClient(ip.getText(), Integer.parseInt(port.getText()),params.getText()); + }else { + if (!webSocketClient.isOpen()){ + webSocketClient(ip.getText(), Integer.parseInt(port.getText()),params.getText()); + } + } + } + + public void webSocketClient(String socket_address, int socket_port,String params) { + + String url = "ws://" + socket_address + ":" + socket_port+params; + log.info(url); + try { + webSocketClient = new WebSocketClient(new URI(url), new Draft_6455()) { + //连接服务端时触发 + @Override + public void onOpen(ServerHandshake handshakedata) { + add_msg("websocket客户端和服务器连接成功!"); + } + + //收到服务端消息时触发 + @Override + public void onMessage(String message) { + add_msg(message); + } + + //和服务端断开连接时触发 + @Override + public void onClose(int code, String reason, boolean remote) { + add_msg("websocket客户端退出连接"); + } + + //连接异常时触发 + @Override + public void onError(Exception ex) { + add_msg("websocket客户端和服务器连接发生错误={" + ex.getMessage() + "}"); + } + }; + webSocketClient.connect(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void add_msg(String msg) { + message_list.add(msg); + message_list.add(System.lineSeparator()); + } +} diff --git a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java index 70d38dd..f31d313 100644 --- a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java +++ b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java @@ -298,6 +298,7 @@ public class ResourcesUtils { Socket_server_aio("aio socket server",5), Socket_server_nio("nio socket server",6), Socket_client_nio("nio socket client",7), + Web_Socket_client("web socket client",8), ; ServerTools(String title, int index) { diff --git a/src/main/resources/fxml/home.fxml b/src/main/resources/fxml/home.fxml index 2afb18e..ae974ab 100644 --- a/src/main/resources/fxml/home.fxml +++ b/src/main/resources/fxml/home.fxml @@ -89,6 +89,7 @@ + diff --git a/src/main/resources/fxml/load-start.fxml b/src/main/resources/fxml/load-start.fxml index a691158..6b3257a 100644 --- a/src/main/resources/fxml/load-start.fxml +++ b/src/main/resources/fxml/load-start.fxml @@ -11,7 +11,7 @@ - +