From c0f0209fe0796ffce88b9cf462664ee89935fe61 Mon Sep 17 00:00:00 2001 From: denzow Date: Mon, 7 May 2018 21:36:44 +0900 Subject: [PATCH] Feature handle skip scheme ws url if skip scheme url, like ` //localhost:8080` , add `ws` or `wss` . --- src/Observer.js | 4 ++++ test/unit/specs/Observer.spec.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/Observer.js b/src/Observer.js index 17c3c5c..2e2316e 100755 --- a/src/Observer.js +++ b/src/Observer.js @@ -3,6 +3,10 @@ import Emitter from './Emitter' export default class { constructor (connectionUrl, opts = {}) { this.format = opts.format && opts.format.toLowerCase() + if(connectionUrl.startsWith('//')){ + const scheme = window.location.protocol === 'https:' ? 'wss' : 'ws'; + connectionUrl = `${scheme}://${connectionUrl}` + } this.connectionUrl = connectionUrl this.opts = opts diff --git a/test/unit/specs/Observer.spec.js b/test/unit/specs/Observer.spec.js index 4e6123e..afc8284 100644 --- a/test/unit/specs/Observer.spec.js +++ b/test/unit/specs/Observer.spec.js @@ -23,6 +23,20 @@ describe('Observer.js', () => { }, vm) }) + it('fires onopen event skip scheme', (done) => { + mockServer = new Server(wsUrl) + mockServer.on('connection', ws => { + ws.send('hi') + }) + Vue.use(VueNativeSock, '//localhost:8080') + let vm = new Vue() + observer = new Observer(wsUrl) + Emitter.addListener('onopen', (data) => { + expect(data.type).to.equal('open') + mockServer.stop(done) + }, vm) + }) + // TODO: DRY it('passes a json commit to the provided vuex store', (done) => { let expectedMsg = { mutation: 'setName', value: 'steve' }