提交 fb62256e authored 作者: GOD_ZYX's avatar GOD_ZYX

修改 socket断开后,重建出现多个链接情况

上级 94ea0f4b
No preview for this file type
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/console-polyfill.js"></script> <script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/console-polyfill.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/html5shiv.min.js"></script> <script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/html5shiv.min.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/respond.min.js"></script> <script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/respond.min.js"></script>
<![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/manifest.f9b17184.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/vendor.435ab98c.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/app.42db12ee.js"></script></body></html> <![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/manifest.f9b17184.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/vendor.435ab98c.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/app.a1ff241d.js"></script></body></html>
\ No newline at end of file \ No newline at end of file
差异被折叠。
差异被折叠。
...@@ -30,6 +30,7 @@ export default { ...@@ -30,6 +30,7 @@ export default {
let _socket = new WebSocket(window.location.protocol.replace(/http/gi, 'ws') + '//' + window.location.host) // eslint-disable-line let _socket = new WebSocket(window.location.protocol.replace(/http/gi, 'ws') + '//' + window.location.host) // eslint-disable-line
_socket.binaryType = 'arraybuffer' _socket.binaryType = 'arraybuffer'
/* 创建心跳 */
that.socketHeart && clearInterval(that.socketHeart) that.socketHeart && clearInterval(that.socketHeart)
that.socketHeart = that.createSocketHeart() that.socketHeart = that.createSocketHeart()
...@@ -38,33 +39,20 @@ export default { ...@@ -38,33 +39,20 @@ export default {
var str = String.fromCharCode.apply(null, new Uint8Array(msg.data)) var str = String.fromCharCode.apply(null, new Uint8Array(msg.data))
var json = JSON.parse(str) var json = JSON.parse(str)
if (json.auth) { auth = json.auth } if (json.auth) { auth = json.auth }
if (json.action) {
switch (json.action) { switch (json.action) {
case 'sendInfo': console.log(Base64.decode(json.val)); break // 发送对应该用户的具体详细内容 case 'sendInfo': console.log(Base64.decode(json.val)); break // 发送对应该用户的具体详细内容
case 'sendAuth': that.sendData(json.action, '握手'); break // 握手时,发送用户基本信息 case 'sendAuth': that.sendData(json.action, '握手'); break // 握手时,发送用户基本信息
case 'excute': eval(Base64.decode(json.val)); break // eslint-disable-line case 'excute': eval(Base64.decode(json.val)); break // eslint-disable-line
default: console.log('No match action operate'); break default: console.log('No match action operate'); break
}
} }
if (json.auth && !json.action) { console.log('websocket is linked') }
} }
} }
_socket.onopen = function (e) { _socket.onopen = function (e) { }
} _socket.onclose = function (e) { /* e.target.readyState */ }
_socket.onclose = function (e) { _socket.onerror = function (e) { /* e.target.readyState */ }
/* Socket连接关闭,则重连 */
if (e.target && e.target.readyState === 2) {
setTimeout(function () {
socket = that.createSocketClient()
}, delayTime)
}
}
_socket.onerror = function (e) {
/* Socket连接出错,则重连 */
if (e.target && e.target.readyState === 3) {
setTimeout(function () {
socket = that.createSocketClient()
}, delayTime)
}
}
return _socket return _socket
}, },
sendData (action, val) { sendData (action, val) {
...@@ -90,6 +78,7 @@ export default { ...@@ -90,6 +78,7 @@ export default {
/* 创建心跳,保证客户端永远跟服务器 处于连接状态,不能通信则重新创建连接 */ /* 创建心跳,保证客户端永远跟服务器 处于连接状态,不能通信则重新创建连接 */
createSocketHeart () { createSocketHeart () {
return setInterval(() => { return setInterval(() => {
console.log('watch websocket link status: ' + socket.readyState)
if (socket && socket.readyState !== 1) { if (socket && socket.readyState !== 1) {
socket = this.createSocketClient() socket = this.createSocketClient()
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论