65 lines
1.5 KiB
JavaScript
65 lines
1.5 KiB
JavaScript
const connection = new WebSocket('ws://localhost:8181/socket')
|
|
// const connection = new WebSocket('wss://echo.websocket.org')
|
|
|
|
export default function createSignalPlugin () {
|
|
return store => {
|
|
connection.onopen = function () {
|
|
console.log('WS connected')
|
|
store.dispatch('app/signalConnected')
|
|
}
|
|
|
|
connection.onerror = function (error) {
|
|
console.log('WS error ' + error)
|
|
store.dispatch('app/signalError', error)
|
|
}
|
|
|
|
connection.onmessage = function (message) {
|
|
console.log('WS message', message.data)
|
|
|
|
var data = JSON.parse(message.data)
|
|
|
|
switch (data.type) {
|
|
case 'offer':
|
|
store.dispatch('rtc/offer', data.offer, data.name)
|
|
break
|
|
|
|
case 'answer':
|
|
store.dispatch('rtc/answer', data.answer, data.name)
|
|
break
|
|
|
|
case 'candidate':
|
|
store.dispatch('rtc/candidate', data.candidate, data.name)
|
|
break
|
|
|
|
case 'leave':
|
|
store.dispatch('rtc/leave')
|
|
break
|
|
|
|
case 'login':
|
|
store.dispatch('app/login', data.message)
|
|
break
|
|
|
|
case 'serverInfos':
|
|
store.dispatch('app/serverStatus', data)
|
|
break
|
|
|
|
case 'createRoom':
|
|
store.dispatch('app/createRoom', data.message)
|
|
break
|
|
|
|
case 'error':
|
|
store.dispatch('app/error', data.message)
|
|
break
|
|
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export function send (message) {
|
|
console.log('WS send', message)
|
|
connection.send(JSON.stringify(message))
|
|
}
|