index.vue 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <div class="app-container">
  3. <el-form label-width="120px">
  4. <el-row type="flex" :gutter="0">
  5. <el-col :sm="12">
  6. <el-form-item label="WebSocket地址" size="small">
  7. <el-input v-model="url" type="text"/>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :offset="1">
  11. <el-form-item label="" label-width="0px" size="small">
  12. <el-button @click="connect" type="primary" :disabled="ws&&ws.readyState===1">
  13. {{ ws && ws.readyState === 1 ? "已连接" : "连接" }}
  14. </el-button>
  15. <el-button @click="exit" type="danger">断开</el-button>
  16. </el-form-item>
  17. </el-col>
  18. </el-row>
  19. <el-form-item label="发送内容" size="small">
  20. <el-input type="textarea" v-model="message" :rows="5"/>
  21. </el-form-item>
  22. <el-form-item label="" size="small">
  23. <el-button type="success" @click="send">发送消息</el-button>
  24. </el-form-item>
  25. <el-form-item label="接收内容" size="small">
  26. <el-input type="textarea" v-model="content" :rows="12" disabled/>
  27. </el-form-item>
  28. <el-form-item label="" size="small">
  29. <el-button type="info" @click="content=''">清空消息</el-button>
  30. </el-form-item>
  31. </el-form>
  32. </div>
  33. </template>
  34. <script>
  35. import store from "@/store";
  36. import {getNowDateTime} from "@/utils/ruoyi";
  37. export default {
  38. data() {
  39. return {
  40. url: process.env.VUE_APP_BASE_API + "/websocket/message",
  41. message: "",
  42. content: "",
  43. ws: null,
  44. };
  45. },
  46. created() {
  47. this.url = this.url.replace("http", "ws")
  48. },
  49. methods: {
  50. connect() {
  51. if (!'WebSocket' in window) {
  52. this.$modal.msgError("您的浏览器不支持WebSocket");
  53. return;
  54. }
  55. const userId = store.getters.userId;
  56. this.ws = new WebSocket(this.url + "?userId=" + userId);
  57. const self = this;
  58. this.ws.onopen = function (event) {
  59. self.content = self.content + "\n**********************连接开始**********************\n";
  60. };
  61. this.ws.onmessage = function (event) {
  62. self.content = self.content + "接收时间:" + getNowDateTime() + "\n" + event.data + "\n";
  63. };
  64. this.ws.onclose = function (event) {
  65. self.content = self.content + "**********************连接关闭**********************\n";
  66. };
  67. this.ws.error = function (event) {
  68. self.content = self.content + "**********************连接异常**********************\n";
  69. };
  70. },
  71. exit() {
  72. if (this.ws) {
  73. this.ws.close();
  74. this.ws = null;
  75. }
  76. },
  77. send() {
  78. if (!this.ws || this.ws.readyState !== 1) {
  79. this.$modal.msgError("未连接到服务器");
  80. return;
  81. }
  82. if (!this.message) {
  83. this.$modal.msgError("请输入发送内容");
  84. return;
  85. }
  86. this.ws.send(this.message);
  87. }
  88. },
  89. };
  90. </script>