leader.vue 1.7 KB

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