same_screen_leader.html 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>主持人</title>
  7. <style>
  8. html,
  9. body {
  10. width: 100%;
  11. height: 100%;
  12. margin: 0;
  13. overflow: hidden;
  14. }
  15. .scene {
  16. width: 100%;
  17. height: 100%;
  18. }
  19. #toolbar {
  20. position: absolute;
  21. left: 0;
  22. bottom: 0;
  23. z-index: 1000;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div id="scene" class="scene"></div>
  29. <script src="../../libs/socket.io.min.js"></script>
  30. <script src="//4dkk.4dage.com/v4/sdk/4.2.2/kankan-sdk-deps.js"></script>
  31. <script src="//4dkk.4dage.com/v4/sdk/4.2.2/kankan-sdk.js"></script>
  32. <script>
  33. function getURLParams(params) {
  34. var p = []
  35. for (let key in params) {
  36. p.push(key + '=' + encodeURIComponent(params[key]))
  37. }
  38. return p.join('&')
  39. }
  40. function createSocket(config) {
  41. var socket = io('https://epx-ws.4dkankan.com/', {
  42. path: '/ws-sync',
  43. transports: ['websocket'],
  44. })
  45. return socket
  46. }
  47. var kankan = null
  48. var isJoined = false
  49. var socket = createSocket()
  50. socket.on('connect', () => {
  51. socket.emit('join', {
  52. userId: Date.now().toString(),
  53. roomId: 'test-room',
  54. role: 'leader',
  55. })
  56. })
  57. socket.on('join', data => {
  58. isJoined = true
  59. })
  60. socket.on('action', data => {
  61. if (data.type == 'error') {
  62. } else if (data.type == 'user-init') {
  63. kankan.Connect.follow.sync()
  64. }
  65. })
  66. socket.on('sync', data => {
  67. kankan.Connect.sync.receive(data)
  68. })
  69. var kankan = new KanKan({
  70. dom: '#scene',
  71. num: 'KJ-JYo2ZZyKKJ',
  72. })
  73. kankan.Scene.on('loaded', () => {
  74. kankan.Connect.sync.start()
  75. })
  76. kankan.Connect.sync.on('data', data => {
  77. if (isJoined) {
  78. socket.emit('sync', data)
  79. }
  80. })
  81. kankan.render()
  82. </script>
  83. </body>
  84. </html>