AdminCommands.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <div>
  3. <h3>Admin Session</h3>
  4. <div v-for="request in requestCmds" :key="request.keyword"><button @click="sendRequest(request)">{{ request.label }} </button></div>
  5. <div v-for="response in responses" :key="response.cnt">{{ response.data }}</div>
  6. </div>
  7. </template>
  8. <script lang="ts">
  9. import { Component, Prop, Vue } from 'vue-property-decorator'
  10. import * as io from 'socket.io-client';
  11. @Component
  12. export default class AdminCommands extends Vue {
  13. @Prop() public connection;
  14. @Prop() public session;
  15. idToken: string = ''
  16. requestCmds = [
  17. { keyword: 'login', label: 'getCurrentLogins' },
  18. //{ keyword: 'conn', label: 'getCurrentConnections' },
  19. //{ keyword: 'sub', label: 'getSubscriptions' },
  20. // { keyword: 'req', label: 'getRequests' },
  21. // { keyword: 'res', label: 'getResponses' },
  22. ];
  23. socket = null
  24. responses = []
  25. url = 'http://localhost:3111'
  26. connect(){
  27. const socket = io.connect(this.url)
  28. let cnt = 0;
  29. socket.on('admin_response', (data) => {
  30. cnt++;
  31. this.responses.unshift({cnt, data: JSON.stringify(data,null,3)})
  32. })
  33. socket.on('connect', (ws) => {
  34. console.info('admin connected', ws, socket?.id)
  35. });
  36. socket.connect();
  37. this.socket = socket;
  38. }
  39. sendRequest(request) {
  40. const keyword = request.keyword
  41. const options = {}
  42. this.socket.emit('admin_request',{ request: keyword, options }, (data)=>{
  43. console.log({ got: data })
  44. })
  45. }
  46. loginDisabled(){
  47. if ( this.idToken == null ) return true
  48. if ( this.connection.socketId == null ) return true
  49. if ( this.session.ucpId != null ) return true
  50. return false
  51. }
  52. mounted(){
  53. this.connect()
  54. }
  55. }
  56. </script>
  57. <style>
  58. </style>