提交 52d5e13b authored 作者: GOD_ZYX's avatar GOD_ZYX

Merge remote-tracking branch 'origin/master' into ecollage

# Conflicts: # build.zip # client-dist/index.html # client-dist/resources/manifest.38c894b2.js # client-dist/resources/manifest.6dd89d2d.js # client-dist/resources/manifest.ea88ecdb.js
...@@ -2,4 +2,8 @@ ...@@ -2,4 +2,8 @@
<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>
<<<<<<< HEAD
<![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-ecollage/resources/manifest.ea88ecdb.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-ecollage/resources/vendor.435ab98c.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-ecollage/resources/app.30b29a84.js"></script></body></html> <![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-ecollage/resources/manifest.ea88ecdb.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-ecollage/resources/vendor.435ab98c.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-ecollage/resources/app.30b29a84.js"></script></body></html>
=======
<![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/manifest.6dd89d2d.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.4fed8b5a.js"></script></body></html>
>>>>>>> origin/master
差异被折叠。
差异被折叠。
差异被折叠。
!function(d){function e(e){for(var t,r,n=e[0],a=e[1],o=e[2],c=0,f=[];c<n.length;c++)r=n[c],s[r]&&f.push(s[r][0]),s[r]=0;for(t in a)Object.prototype.hasOwnProperty.call(a,t)&&(d[t]=a[t]);for(b&&b(e);f.length;)f.shift()();return i.push.apply(i,o||[]),u()}function u(){for(var e,t=0;t<i.length;t++){for(var r=i[t],n=!0,a=1;a<r.length;a++){var o=r[a];0!==s[o]&&(n=!1)}n&&(i.splice(t--,1),e=p(p.s=r[0]))}return e}var r={},l={3:0},s={3:0},i=[];function p(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return d[e].call(t.exports,t,t.exports,p),t.l=!0,t.exports}p.e=function(i){var e=[];l[i]?e.push(l[i]):0!==l[i]&&{0:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1,12:1,13:1,14:1,15:1,16:1,17:1,18:1,19:1,20:1,21:1,22:1}[i]&&e.push(l[i]=new Promise(function(e,n){for(var t="resources/"+({}[i]||i)+"."+{0:"7e9c19881242",1:"31d6cfe0d16a",5:"b6a10460f085",6:"1b8137937536",7:"edadd3d1dece",8:"2b76410db4d0",9:"30b36ab56f09",10:"eb5caf8d2af7",11:"970f20fae48e",12:"fc688477e0f2",13:"9c95c5430f41",14:"d32639348e7f",15:"dfc0763315c8",16:"a6265ac4f731",17:"e10160ee3f3a",18:"abf993cecc16",19:"da1346fedd49",20:"68029434d520",21:"43ee51cf782c",22:"12c536f6abaf",23:"31d6cfe0d16a",24:"31d6cfe0d16a",25:"31d6cfe0d16a",26:"31d6cfe0d16a",27:"31d6cfe0d16a",28:"31d6cfe0d16a",29:"31d6cfe0d16a",30:"31d6cfe0d16a"}[i]+".css",a=p.p+t,r=document.getElementsByTagName("link"),o=0;o<r.length;o++){var c=(d=r[o]).getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(c===t||c===a))return e()}var f=document.getElementsByTagName("style");for(o=0;o<f.length;o++){var d;if((c=(d=f[o]).getAttribute("data-href"))===t||c===a)return e()}var u=document.createElement("link");u.rel="stylesheet",u.type="text/css",u.onload=e,u.onerror=function(e){var t=e&&e.target&&e.target.src||a,r=new Error("Loading CSS chunk "+i+" failed.\n("+t+")");r.request=t,delete l[i],u.parentNode.removeChild(u),n(r)},u.href=a,document.getElementsByTagName("head")[0].appendChild(u)}).then(function(){l[i]=0}));var t,r=s[i];if(0!==r)if(r)e.push(r[2]);else{var n=new Promise(function(e,t){r=s[i]=[e,t]});e.push(r[2]=n);var a,o=document.getElementsByTagName("head")[0],c=document.createElement("script");c.charset="utf-8",c.timeout=120,p.nc&&c.setAttribute("nonce",p.nc),c.src=p.p+"resources/"+({}[t=i]||t)+"."+{0:"44b419c5",1:"b54a4784",5:"09a1f3ee",6:"5788073d",7:"34107010",8:"3725acf5",9:"bbdfab9a",10:"921c3354",11:"fea790d0",12:"bc06c483",13:"c50bed76",14:"21f6e4db",15:"3d4a809b",16:"eb41993a",17:"f3b61509",18:"15cc538d",19:"d19d94e7",20:"e4881800",21:"ff867a66",22:"51a95842",23:"aa46f405",24:"f05a2d7d",25:"cd45549d",26:"2e14c205",27:"12a87957",28:"01ab5f90",29:"c6599869",30:"d3ea8c6f"}[t]+".js",a=function(e){c.onerror=c.onload=null,clearTimeout(f);var t=s[i];if(0!==t){if(t){var r=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src,a=new Error("Loading chunk "+i+" failed.\n("+r+": "+n+")");a.type=r,a.request=n,t[1](a)}s[i]=void 0}};var f=setTimeout(function(){a({type:"timeout",target:c})},12e4);c.onerror=c.onload=a,o.appendChild(c)}return Promise.all(e)},p.m=d,p.c=r,p.d=function(e,t,r){p.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},p.t=function(t,e){if(1&e&&(t=p(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(p.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)p.d(r,n,function(e){return t[e]}.bind(null,n));return r},p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,"a",t),t},p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p.p="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/",p.oe=function(e){throw console.error(e),e};var t=window.webpackJsonp=window.webpackJsonp||[],n=t.push.bind(t);t.push=e,t=t.slice();for(var a=0;a<t.length;a++)e(t[a]);var b=n;u()}([]);
\ No newline at end of file
...@@ -77,6 +77,8 @@ export default { ...@@ -77,6 +77,8 @@ export default {
}, },
data () { data () {
return { return {
initOverVideoCloseHearBeatTime: parseInt(Math.random() * 1000),
overVideoCloseHearBeatTime: 0, // 当视频全部完成时,随机分钟课程完成挂视频时间,关闭计时器,继承上面的时间
state: { state: {
pptIndex: 0, // ppt 所在当前位置 pptIndex: 0, // ppt 所在当前位置
pptBoxOnly: false, // 仅展示ppt框 pptBoxOnly: false, // 仅展示ppt框
...@@ -125,6 +127,18 @@ export default { ...@@ -125,6 +127,18 @@ export default {
} else { } else {
this._rProgress = _.assignIn({}, this.chapterVideo.progress) this._rProgress = _.assignIn({}, this.chapterVideo.progress)
} }
/* 已经播放到最后,定时记录开始,规定时间后关闭计时器 */
if (this.videoFlash.lastTime === this._rProgress.cpt && this.videoFlash.lastTime === this._rProgress.mpt) {
/* 根据设定时间关闭计时器 */
if (this.overVideoCloseHearBeatTime > 0) {
// console.log(this.overVideoCloseHearBeatTime)
let _t = 5 // 每次增加 进度时间,跟计时器时间等同
this._rProgress.pt += _t
this.overVideoCloseHearBeatTime -= _t
}
} else {
this.overVideoCloseHearBeatTime = this.initOverVideoCloseHearBeatTime
}
} }
}, 5000) }, 5000)
}, },
......
...@@ -9,22 +9,30 @@ let socket = null ...@@ -9,22 +9,30 @@ let socket = null
let auth = '' let auth = ''
export default { export default {
data () {
return {
socketHeart: null
}
},
mounted () { mounted () {
if (window.WebSocket) { if (window.WebSocket) {
try { try {
socket = this.createSocket() socket = this.createSocketClient()
} catch (e) { } catch (e) {
console.log('不支持,websocket') console.log('不支持,websocket')
} }
} }
}, },
methods: { methods: {
createSocket () { createSocketClient () {
let that = this let that = this
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 = that.createSocketHeart()
socket.onmessage = function (msg) { _socket.onmessage = function (msg) {
if (msg.data instanceof ArrayBuffer) { if (msg.data instanceof ArrayBuffer) {
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)
...@@ -38,9 +46,21 @@ export default { ...@@ -38,9 +46,21 @@ export default {
} }
} }
} }
socket.onopen = function (e) { } _socket.onopen = function (e) {
socket.onclose = function () { } }
return socket _socket.onclose = function (e) {
/* Socket连接关闭,则重连 */
if (e.target && e.target.readyState === 2) {
socket = that.createSocketClient()
}
}
_socket.onerror = function (e) {
/* Socket连接出错,则重连 */
if (e.target && e.target.readyState === 3) {
socket = that.createSocketClient()
}
}
return _socket
}, },
sendData (action, val) { sendData (action, val) {
let str = '' let str = ''
...@@ -59,6 +79,14 @@ export default { ...@@ -59,6 +79,14 @@ export default {
} else { } else {
console.log('not link build success, status: ' + socket.readyState) console.log('not link build success, status: ' + socket.readyState)
} }
},
/* 创建心跳,保证客户端永远跟服务器 处于连接状态,不能通信则重新创建连接 */
createSocketHeart () {
return setInterval(() => {
if (socket && socket.readyState !== 1) {
socket = this.createSocketClient()
}
}, 10000)
} }
} }
} }
......
...@@ -10,7 +10,7 @@ const sendMsg = (req, res) => { ...@@ -10,7 +10,7 @@ const sendMsg = (req, res) => {
if (global.nsSocket) { if (global.nsSocket) {
if (req.body.sendMsg === 'send') { if (req.body.sendMsg === 'send') {
com.WebSocket.sendData(req.body.arr && req.body.arr.split(','), req.body.action, req.body.val) com.WebSocket.sendData(req.body.arr && req.body.arr.split(','), req.body.action, req.body.val)
res.status(200).send({ msg: '已向客户端发送消息' }) res.status(200).send({ msg: '已向客户端发送消息', linkCount: _nsCoonPool.length })
} else { } else {
let _conArr = [] let _conArr = []
for (let i = 0; i < _nsCoonPool.length; i++) { for (let i = 0; i < _nsCoonPool.length; i++) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论