The goal of this project is to implement a WebRTC video (conf) app using VueJS with SIP libraries.
It will use RTCPeerConnection API to start WebRTC communications between peers until it becomes too hard to deal with the code and requires the use of an external library (like SIPJS, JSSIP, sipML5) to maintain active connections, create invites to other peers and send SDP payloads.
This project is inspired from Google WebRTC codelab.
It will use VueCLI and VueJS3.
If VueCLI doesn't allow me to work on my dev env efficiently, I will move to using Vue without the VueCLI scaffolding. This involves creating config files for the build part (either using Webpack or Rollup or Parcel or Snowpack)
npm install
npm run serve
npm run build
npm run test:unit
npm run test:e2e
npm run lint
Here are the resources I inspired from to setup the store with modules using Typescript
-
Vuex + TypeScript: https://dev.to/3vilarthas/vuex-typescript-m4j
- vuex-typescript GitHub repo
-
VueX modules + Typescript: https://codesandbox.io/s/using-vuex-4-modules-in-vue-3-with-typescript-7ygvy
-
SIP.js: https://github.com/onsip/SIP.js
-
JsSIP:
-
WebRTC ICE STUN:
- Peer connection ICE candidates
- webrtc-internals
- Composition API comparison by karol-f: https://github.com/karol-f/vue-composition-api-comparison
- VueJS 3 + Vuex 4 + Typescript + Composition API: https://soshace.com/building-web-apps-with-vue-3-composition-api-typescript-vuex4-0/
-
Video Conference: https://www.asterisk.org/asterisk-15-multi-stream-media-sfu/
-
Conference bridge messaging: https://wiki.asterisk.org/wiki/display/AST/Conference+Bridge+Messaging
-
WebRTC clients in Asterisk: https://wiki.asterisk.org/wiki/display/AST/Configuring+Asterisk+for+WebRTC+Clients
-
ICE STUN TURN :
- https://medium.com/av-transcode/what-is-webrtc-and-how-to-setup-stun-turn-server-for-webrtc-communication-63314728b9d0
- https://groups.google.com/g/sip_js/c/W_ZTmpIeTbQ
- http://www.asterisk-france.org/threads/3421-SIP-NAT-et-pas-d-audio-pas-de-son
- https://wiki.asterisk.org/wiki/display/AST/Interactive+Connectivity+Establishment+%28ICE%29+in+Asterisk
- https://wiki.asterisk.org/wiki/display/AST/Installing+and+Configuring+CyberMegaPhone (see in ~/www/fscholsen.local/webrtc/cyber_mega_phone_2k)
- allow to change audio and video devices (input (microphone) and output)
- fix video with ICE (stun/turn issue)
- send messages from a peer to another