这对我来说很新,所以如果这是一个愚蠢/明显的问题,请原谅我。
我的服务器上有一个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');
}