leader.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <script setup lang="ts">
  2. import { onMounted, onUnmounted, provide, ref } from 'vue'
  3. import { KkDaikan } from 'kankan-components'
  4. import type { DaikanUserInfoType } from 'kankan-components'
  5. const loading = ref(false)
  6. const userInfo = ref<DaikanUserInfoType>({
  7. userId: 'test-user-1',
  8. roomId: 'test-roomid-1',
  9. avatar: '',
  10. nickName: 'xxxxx',
  11. role: 'leader',
  12. })
  13. const socketUrl = ref('wss://testws.4dkankan.com')
  14. const socketUrlLib = ref(
  15. 'https://cdn.bootcdn.net/ajax/libs/socket.io/4.5.4/socket.io.min.js'
  16. )
  17. onMounted(() => {
  18. const __win = window as any
  19. if (!__win.__sdk) {
  20. const __sdk = (__win.__sdk = new __win.KanKan({
  21. num: 'KJ-t-wOXfx2SDFy',
  22. server: '#DEMOSEVER#',
  23. }))
  24. provide('__sdk', __sdk)
  25. __sdk.Scene.on('ready', () => (loading.value = true))
  26. __sdk.mount('#scene').render()
  27. }
  28. })
  29. onUnmounted(() => {
  30. const __win = window as any
  31. if (__win.__sdk) {
  32. __win.__sdk = null
  33. }
  34. })
  35. const handleJoin = () => {
  36. console.log('isJoin')
  37. }
  38. const handleError = (data: any) => {
  39. console.log('handleError', data)
  40. }
  41. const handleSync = (data: any) => {
  42. console.log('handleSync', data)
  43. }
  44. </script>
  45. <template>
  46. <div id="scene" class="scene">
  47. <Teleport v-if="loading" to=".kankan-plugins">
  48. <div xui_daikan_view>
  49. <kk-daikan
  50. :socket-lib="socketUrlLib"
  51. :user-info="userInfo"
  52. :socket-url="socketUrl"
  53. @join="handleJoin"
  54. @error="handleError"
  55. @sync="handleSync"
  56. />
  57. </div>
  58. </Teleport>
  59. </div>
  60. </template>
  61. <style>
  62. html,
  63. body,
  64. #app {
  65. width: 100%;
  66. height: 100%;
  67. padding: 0;
  68. margin: 0;
  69. }
  70. .scene {
  71. width: 100%;
  72. height: 100%;
  73. padding: 0;
  74. margin: 0;
  75. }
  76. </style>