same_screen.md 2.4 KB

  • 主持人

cinwell website

  • 被带人

cinwell website

  • 主持人端示例代码
function createSocket(config) {
    var socket = io('https://epx-ws.4dkankan.com/', { // 注意:此地址仅供测试,切勿在生产中使用
        path: '/ws-sync',
        transports: ['websocket'],
    })
    return socket
}

var kankan = null
var isJoined = false
var socket = createSocket()

socket.on('connect', () => {
    socket.emit('join', {
        userId: Date.now().toString(), // 随机一个用户标识
        roomId: 'test-room', // 可以修改不同的房间标识
        role: 'leader', // 角色
    })
})

socket.on('join', data => {
    isJoined = true
})

socket.on('action', data => {
    if (data.type == 'error') {
    } else if (data.type == 'user-init') {
        kankan.Connect.follow.sync()
    } 
})

socket.on('sync', data => {
    kankan.Connect.sync.receive(data)
})

var kankan = new KanKan({
    dom: '#scene',
    num: 'KJ-JYo2ZZyKKJ',
})

kankan.Scene.on('loaded', () => {
    kankan.Connect.sync.start()
})

kankan.Connect.sync.on('data', data => {
    if (isJoined) {
        socket.emit('sync', data)
    }
})

kankan.render()
  • 被带人示例代码
 function createSocket(config) {
    var socket = io('https://epx-ws.4dkankan.com/', {
        path: '/ws-sync',
        transports: ['websocket'],
    })
    return socket
}

var kankan = null
var isJoined = false
var socket = createSocket()

socket.on('connect', () => {
    socket.emit('join', {
        userId: Date.now().toString(),
        roomId: 'test-room', // 需与主持人一致
        role: 'customer',
    })
})

socket.on('join', data => {
    isJoined = true
})

socket.on('action', data => {
    if (data.type == 'error') {
    } 
})

socket.on('sync', data => {
    kankan.Connect.sync.receive(data)
})

var kankan = new KanKan({
    dom: '#scene',
    num: 'KJ-JYo2ZZyKKJ',
})


kankan.Scene.on('loaded', () => {
    kankan.Connect.sync.start()
    socket.emit('action', { type: 'user-init' })    
})

kankan.Connect.sync.on('data', data => {
    if (isJoined) {
        socket.emit('sync', data)
    }
})

kankan.render()