From 167dcc354d2ed344fdf54ed92d43f4bd1dc06ecb Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 11 Aug 2020 14:08:55 +0200 Subject: [PATCH] removed webrtc for full websocket --- client/src/store/rtcModule.js | 218 ------------------------------- client/src/store/signalPlugin.js | 4 +- 2 files changed, 2 insertions(+), 220 deletions(-) delete mode 100644 client/src/store/rtcModule.js diff --git a/client/src/store/rtcModule.js b/client/src/store/rtcModule.js deleted file mode 100644 index b639747..0000000 --- a/client/src/store/rtcModule.js +++ /dev/null @@ -1,218 +0,0 @@ -import { send } from './signalPlugin' -import store from './index' - -var lastPeer // horrible - -const configuration = { - iceServers: [{ urls: 'stun:stun.l.google.com:19302' }] -} - -const state = { - name: null, - peers: [] -} - -const getters = { - displayName: state => state.name -} - -const actions = { - setName ({ commit }, name) { - commit('SET_NAME', name) - }, - async makeOffer ({ commit }, targetName) { - commit('CREATE_PEER_CONNECTION', targetName) - commit('OFFER', targetName) - }, - async offer ({ commit }, { offer, senderName }) { - console.log('offer from ' + senderName) - commit('CREATE_PEER_CONNECTION', senderName) - commit('ANSWER', { target: senderName, offer: offer }) - }, - answer ({ commit }, { answer, senderName }) { - console.log('answer from ' + senderName) - commit('FINALIZE', { target: senderName, answer: answer }) - }, - candidate ({ commit }, { candidate, senderName }) { - commit('CANDIDATE', { target: senderName, candidate: candidate }) - }, - leave ({ commit }) { - commit('LEAVE') - }, - kick ({ commit }, target) { - commit('KICK', target) - }, - broadcast ({ commit }, { message, type }) { - commit('BROADCAST', { message: message, type: type }) - } -} - -const mutations = { - SET_NAME (state, name) { - state.name = name - }, - CREATE_PEER_CONNECTION (state, target) { - console.log('[RTC] create peer connection with ' + target) - var peer = { - name: target, - connection: new RTCPeerConnection(configuration), - dataChannel: null - } - - state.peers.push(peer) - - peer.connection.onicecandidate = function (event) { - if (event.candidate) { - send({ - type: 'candidate', - name: state.name, - target: target, - data: event.candidate - }) - } - } - - peer.connection.onnegotiationneeded = function () { handleNegotiationNeededEvent(target) } - peer.connection.onsignalingstatechange = function () { handleSignalingStateChangeEvent(peer.connection) } - peer.connection.oniceconnectionstatechange = function () { handleICEConnectionStateChangeEvent(peer.connection) } - peer.connection.onicegatheringstatechange = function () { handleICEGatheringStateChangeEvent(peer.connection) } - }, - async OFFER (state, target) { - console.log('[RTC] make offer to ' + target) - var peer = state.peers.find(peer => peer.name === target) - - peer.dataChannel = peer.connection.createDataChannel('dataChannel') - peer.dataChannel.onmessage = handleDataChannelMessage - peer.dataChannel.onopen = handleDataChannelStateChangeEvent - peer.dataChannel.onclose = handleDataChannelStateChangeEvent - - var offer = await peer.connection.createOffer() - send({ - type: 'offer', - name: state.name, - target: target, - data: offer - }) - await peer.connection.setLocalDescription(offer) - }, - async ANSWER (state, { target, offer }) { - console.log('[RTC] answer to ' + target) - var peer = state.peers.find(peer => peer.name === target) - - // Permet d'associer le datachannel de la callback au bon peer - lastPeer = peer - - peer.connection.ondatachannel = handleDataChannelCallback - - await peer.connection.setRemoteDescription(new RTCSessionDescription(offer)) - - var answer = await peer.connection.createAnswer() - - await peer.connection.setLocalDescription(answer) - - send({ - type: 'answer', - name: state.name, - target: target, - data: answer - }) - }, - FINALIZE (state, { target, answer }) { - var peer = state.peers.find(peer => peer.name === target) - peer.connection.setRemoteDescription(new RTCSessionDescription(answer)) - }, - CANDIDATE (state, { target, candidate }) { - var peer = state.peers.find(peer => peer.name === target) - peer.connection.addIceCandidate(new RTCIceCandidate(candidate)) - }, - LEAVE (state) { - state.peers.forEach((peer) => { - peer.dataChannel.close() - peer.connection.close() - }) - state.peers = [] - }, - KICK (state, target) { - var peer = state.peers.find(peer => peer.name === target) - peer.dataChannel.close() - peer.connection.close() - const index = state.peers.indexOf(peer) - if (index > -1) { - state.peers.splice(index, 1) - } - }, - BROADCAST (state, { message, type }) { - const data = JSON.stringify({ - type: type, - message: message - }) - console.log('[RTC] broadcast message ' + data) - state.peers.forEach(peer => { - peer.dataChannel.send(data) - }) - } -} - -function handleICEConnectionStateChangeEvent (connection) { - console.log('[RTC] ice connection change to ' + connection.iceConnectionState) -} - -function handleICEGatheringStateChangeEvent (connection) { - console.log('[RTC] ice gathering change to ' + connection.iceGatheringState) -} - -async function handleNegotiationNeededEvent (target) { - console.log('[RTC] negotiation needed from ' + target) -} - -async function handleSignalingStateChangeEvent (connection) { - console.log('[RTC] state changed to ' + connection.signalingState) - switch (connection.signalingState) { - case 'closed': - await connection.close() - break - } -} - -function handleDataChannelStateChangeEvent () { - console.log('[RTC] data channel state change') -} - -function handleDataChannelCallback (event) { - console.log('[RTC] data channel callback ' + event + ' target ' + event.target) - var peer = lastPeer - peer.dataChannel = event.channel - peer.dataChannel.onmessage = handleDataChannelMessage - peer.dataChannel.onopen = handleDataChannelStateChangeEvent - peer.dataChannel.onclose = handleDataChannelStateChangeEvent - - store.dispatch('rtc/broadcast', { message: store.state.room.roomStatus, type: 'status' }) -} - -function handleDataChannelMessage (event) { - console.log('[RTC] data channel message ' + event.data) - var data = JSON.parse(event.data) - console.log('[RTC] data channel message type ' + data.type) - switch (data.type) { - case 'status': - if (!store.state.room.admin) store.dispatch('room/setRoomStatus', data.message) - break - case 'settings': - if (!store.state.room.admin) store.dispatch('room/setRoomSettings', data.message) - break - case 'vote': - store.dispatch('room/vote', { link: data.message.link, linkID: data.message.linkID, isPositive: data.message.isPositive, voterName: data.message.voterName }) - break - case 'userCommand': - if (store.state.room.roomSettings.userControl) store.dispatch('room/setUserCommand', data.message) - break - } -} - -export default { - namespaced: true, - state, - getters, - actions, - mutations -} diff --git a/client/src/store/signalPlugin.js b/client/src/store/signalPlugin.js index f3cccba..7b4b5e8 100644 --- a/client/src/store/signalPlugin.js +++ b/client/src/store/signalPlugin.js @@ -1,6 +1,6 @@ -// const connection = new WebSocket('ws://localhost:8181/socket') +const connection = new WebSocket('ws://localhost:8181/socket') // const connection = new WebSocket('wss://echo.websocket.org') -const connection = new WebSocket('wss://voozik.gltronic.ovh/socket') +// const connection = new WebSocket('wss://voozik.gltronic.ovh/socket') // setTimeout(send({ type: 'alive' }), 5000)