mirror of
https://github.com/tenrok/vue-native-websocket.git
synced 2026-06-20 21:10:35 +03:00
fixed minor bags
This commit is contained in:
@@ -143,10 +143,10 @@ export default new Vuex.Store({
|
|||||||
state.message = message
|
state.message = message
|
||||||
},
|
},
|
||||||
// mutations for reconnect methods
|
// mutations for reconnect methods
|
||||||
[ws.WS_RECONNECT](state, count) {
|
SOCKET_RECONNECT(state, count) {
|
||||||
console.info(state, count)
|
console.info(state, count)
|
||||||
},
|
},
|
||||||
[ws.WS_RECONNECT_ERROR](state) {
|
SOCKET_RECONNECT_ERROR(state) {
|
||||||
state.socket.reconnectError = true;
|
state.socket.reconnectError = true;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -36,7 +36,6 @@ export default {
|
|||||||
},
|
},
|
||||||
beforeDestroy () {
|
beforeDestroy () {
|
||||||
let sockets = this.$options['sockets']
|
let sockets = this.$options['sockets']
|
||||||
clearTimeout(observer.reconnectTimeoutId)
|
|
||||||
|
|
||||||
if (sockets) {
|
if (sockets) {
|
||||||
Object.keys(sockets).forEach((key) => {
|
Object.keys(sockets).forEach((key) => {
|
||||||
|
|||||||
+2
-2
@@ -53,9 +53,9 @@ export default class {
|
|||||||
|
|
||||||
if (this.store) { this.passToStore('SOCKET_' + eventType, event) }
|
if (this.store) { this.passToStore('SOCKET_' + eventType, event) }
|
||||||
|
|
||||||
if (this.reconnection && this.eventType === 'onopen') { this.reconnectionCount = 0 }
|
if (this.reconnection && eventType === 'onopen') { this.reconnectionCount = 0 }
|
||||||
|
|
||||||
if (this.reconnection && eventType === 'onclose') { this.reconnect(event) }
|
if (this.reconnection && eventType === 'onclose') { this.reconnect() }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,4 +130,52 @@ describe('Observer.js', () => {
|
|||||||
mockServer.stop(done)
|
mockServer.stop(done)
|
||||||
}, 100)
|
}, 100)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('reconnection feature', () => {
|
||||||
|
let observer, mockServer, vm, mockStore
|
||||||
|
let wsUrl = 'ws://localhost:8080'
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
mockServer = new Server(wsUrl)
|
||||||
|
mockServer.on('connection', ws => ws.send('hi'))
|
||||||
|
Vue.use(VueNativeSock, wsUrl)
|
||||||
|
vm = new Vue()
|
||||||
|
mockStore = sinon.mock({ commit: () => {} })
|
||||||
|
|
||||||
|
observer = new Observer(wsUrl, {
|
||||||
|
store: mockStore.object,
|
||||||
|
reconnection: true,
|
||||||
|
reconnectionAttempts: 2,
|
||||||
|
WebSocket: new WebSocket(wsUrl),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('calls #reconnect() method', (done) => {
|
||||||
|
sinon.spy(observer, 'reconnect');
|
||||||
|
mockServer.close()
|
||||||
|
|
||||||
|
expect(observer.reconnect).to.called
|
||||||
|
mockServer.stop(done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('fires SOCKET_RECONNECT event', (done) => {
|
||||||
|
sinon.spy(observer, 'passToStore');
|
||||||
|
const clock = sinon.useFakeTimers()
|
||||||
|
mockServer.close()
|
||||||
|
clock.tick(1500);
|
||||||
|
|
||||||
|
expect(observer.passToStore).to.have.been.calledWith('SOCKET_RECONNECT')
|
||||||
|
mockServer.stop(done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('fires SOCKET_RECONNECT_ERROR event, after all attemps', (done) => {
|
||||||
|
sinon.spy(observer, 'passToStore');
|
||||||
|
observer.reconnectionCount = 2
|
||||||
|
observer.reconnectionAttempts = 1
|
||||||
|
mockServer.close()
|
||||||
|
|
||||||
|
expect(observer.passToStore).to.have.been.calledWith('SOCKET_RECONNECT_ERROR')
|
||||||
|
mockServer.stop(done)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user