如何防止我的服务器Web套件充斥我的浏览器客户端

时间:2015-08-11 12:59:04

标签: javascript websocket

这对我来说很新,所以如果这是一个愚蠢/明显的问题,请原谅我。

我的服务器上有一个Web套接字。 我每秒发送大约40个jpeg作为字节数组(每个大约12kb)。

在客户端上,我在画布控件上显示图像。

每个JPEG都有一个带有水印标记的时间戳。

时不时地,时间戳开始滞后于当前的系统时间。

有时几分钟。

我宁愿在客户端确定何时出现这种延迟,然后以某种方式刷新网络套接字。

这可能吗?

由于

其他

有人向我指出,只需断开连接并重新连接即可清除幻像信息的插座。

以下代码显示了客户端在失去连接时如何重新连接。我不得不把它放进去,以防我没有收到与服务器的断开连接:

function Reconnect() {
    try {
        ws = new WebSocket(url);
        ws.binaryType = 'arraybuffer';
        ws.onerror = function (e) {
            try {
                console.log('onerror');
            }
            catch (err) {
                console.log(err);
            }
        };
        ws.onclose = function () {
            try {
                Reconnect();
            }
            catch (err) {
                console.log(err);
            }
        };
        ws.onopen = function () {
            try {
                StartPing();
                console.log('onopen');
            }
            catch (err) {
                console.log(err);
            }
        };
        ws.onmessage = function (e) {
                try{
                  ''display image on canvas
                }
                catch (err) {
                    console.log(err);
                }
            }
        };
    }
    catch (err) {
        Reconnect();
    }
}

function StartPing() {
    try{
        window.clearInterval(window.timerID);
        if (!window.timerID) { /* avoid firing a new setInterval, after one has been done */
            window.timerID = setInterval(Ping, 20000);
        }
    }
    catch (err)
    {
        console.log(err + ' Reconnect');
    }
}

function Ping() {
try {

    var now = new Date();
    var d = now.format("yyyymmddhhMMss");
    var currentTimeStamp = d + '000';
    if (parseInt(currentTimeStamp) - parseInt(lastUpdated) < 60) {
        console.log('Reconnect');
        Reconnect();
    }
    else {
        StartPing();
    }
}
catch (err) {
    console.log(err + ' Ping');
}

0 个答案:

没有答案