follow_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: 'customer',
    })
})

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.follow.receive(data)
})

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


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

kankan.Connect.follow.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.follow.receive(data)
})

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


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

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


kankan.render()