Files
Tron.io/client/src/store/socketPlugin.js
2020-09-01 12:36:43 +02:00

55 lines
1.4 KiB
JavaScript

import { ToastProgrammatic as Toast } from 'buefy'
const connection = new WebSocket('ws://localhost:8181/socket')
// const connection = new WebSocket('wss://tronio.gltronic.ovh/socket')
export default function createSocketPlugin () {
return store => {
connection.onopen = function () {
console.log('[WS] connected')
store.dispatch('game/socketConnected')
}
connection.onclose = function () {
console.log('[WS] closed')
}
connection.onerror = function (error) {
console.log('[WS] error ' + error.message)
// store.dispatch('game/error', 'Connection problem')
Toast.open('Connection problem. Retrying in 10s...')
setTimeout(function () {
location.reload()
}, 10000)
}
connection.onmessage = function (message) {
// console.log('[WS] message', message.data)
var data = JSON.parse(message.data)
switch (data.type) {
case 'login':
store.dispatch('game/login', data.message)
break
case 'gameSettings':
store.dispatch('game/settings', data.message)
break
case 'gameUpdate':
store.dispatch('game/update', data.message)
break
case 'gamePlayerDead':
store.dispatch('game/dead', data.message)
break
default:
break
}
}
}
}
export function send (message) {
// console.log('[WS] send', message)
connection.send(JSON.stringify(message))
}