1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- $(function(){
- openSocket(socketUrl);
- });
- let socket;
- let socketUrl="ws://localhost:8080/qk/webSocket/"+$("#loginName").val();
- function openSocket(url) {
- if(typeof(WebSocket) == "undefined") {
- console.log("您的浏览器不支持WebSocket");
- }else{
- console.log("您的浏览器支持WebSocket");
- //实现化WebSocket对象,指定要连接的服务器地址与端口 建立连接
- if(socket!=null){
- socket.close();
- socket=null;
- }
- socket = new WebSocket(url);
- //打开事件
- socket.onopen = function() {
- heartCheck.start();
- console.log("websocket已打开");
- };
- //获得消息事件
- socket.onmessage = function(msg) {
- heartCheck.reset();
- if(msg.data != "HeartBeat"){//如果不是心跳信息,执行业务
- //发现消息进入 开始处理前端触发逻辑
- let opt = JSON.parse(msg.data);
- //落点并飞行至该点
- $.eventPoint.addMarkAndFlyTo(opt);
- //刷新统计图数据
- let deptId = $(".onthis").attr("deptId") == null ? 0 : $(".onthis").attr("deptId");
- let year = $("#year").val();
- $.initData.getEvents(deptId,year);
- }
- console.log(msg.data);
- };
- //关闭事件
- socket.onclose = function() {
- console.log("websocket已关闭");
- reconnect(url);
- };
- //发生了错误事件
- socket.onerror = function() {
- console.log("websocket发生了错误");
- reconnect(url);
- }
- }
- }
- let lockReconnect = false;//避免重复连接
- function reconnect(url) {
- if (lockReconnect) return;
- lockReconnect = true;
- //没连接上会一直重连,设置延迟避免请求过多
- setTimeout(function () {
- openSocket(socketUrl);
- console.log("正在重连,当前时间" + new Date())
- lockReconnect = false;
- }, 5000); //这里设置重连间隔(ms)
- }
- let heartCheck = {
- timeout: 5000,//5s
- timeoutObj: null,
- reset: function(){
- clearInterval(this.timeoutObj);
- this.start();
- },
- start: function(){
- this.timeoutObj = setInterval(function(){
- if(socket.readyState==1){
- socket.send("HeartBeat");
- }
- }, this.timeout)
- }
- };
|