same_screen_customer.html 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. </style>
  20. </head>
  21. <body>
  22. <div id="scene" class="scene"></div>
  23. <script src="../../libs/socket.io.min.js"></script>
  24. <script src="//4dkk.4dage.com/v4/sdk/4.2.2/kankan-sdk-deps.js"></script>
  25. <script src="//4dkk.4dage.com/v4/sdk/4.2.2/kankan-sdk.js"></script>
  26. <script>
  27. function getURLParams(params) {
  28. var p = []
  29. for (let key in params) {
  30. p.push(key + '=' + encodeURIComponent(params[key]))
  31. }
  32. return p.join('&')
  33. }
  34. function createSocket(config) {
  35. var socket = io('https://epx-ws.4dkankan.com/', {
  36. path: '/ws-sync',
  37. transports: ['websocket'],
  38. })
  39. return socket
  40. }
  41. var kankan = null
  42. var isJoined = false
  43. var socket = createSocket()
  44. socket.on('connect', () => {
  45. socket.emit('join', {
  46. userId: Date.now().toString(),
  47. roomId: 'test-room',
  48. role: 'customer',
  49. })
  50. })
  51. socket.on('join', data => {
  52. isJoined = true
  53. })
  54. socket.on('action', data => {
  55. if (data.type == 'error') {
  56. }
  57. })
  58. socket.on('sync', data => {
  59. kankan.Connect.sync.receive(data)
  60. })
  61. var kankan = new KanKan({
  62. dom: '#scene',
  63. num: 'KJ-JYo2ZZyKKJ',
  64. })
  65. kankan.Scene.on('loaded', () => {
  66. kankan.Connect.sync.start()
  67. socket.emit('action', { type: 'user-init' })
  68. })
  69. kankan.Connect.sync.on('data', data => {
  70. if (isJoined) {
  71. socket.emit('sync', data)
  72. }
  73. })
  74. kankan.render()
  75. </script>
  76. </body>
  77. </html>