如何优化以规则间隔传输十六进制字符串



实现语言为Javascript。我必须定期发送长的十六进制字符串(实际上格式并不重要,因为我可以在发送端转换为任何格式,并在接收端重新转换(。由于这些六弦几乎相同,因此按原样发送它们不是最佳选择。相反,我想发送一个不同的

这里是伪代码:

setInterval(function() {
//Using websocket, send message to server 
sendSomeMessage(myHexString);
}, 10000);

这里myHexString是异步计算的。它可能在间隔内改变,也可能不改变。那个部分很容易优化。我可以与以前的版本进行比较,然后取消发送。我需要的是当实际发生变化时,只发送diff的能力,如:

setInterval(function() {
//Using websocket, send message to server 
myDiff = diff(oldString, newString);
if (myDiff.length > 0) 
sendSomeMessage(myDiff);
}, 10000);

在接收端,我将有如下代码:

newVersion = getNewVersion(oldVersion, myDiff);

我在Javascript中发现了一些差异库,但它们只是这样做的:显示差异。我希望能够将diff结果应用于一个内容并获得目标内容。编辑:如果能在Javascript中实现Linuxdiff补丁,那就太好了。

  1. 使用base64编码而不是十六进制编码(base16(时,可以将传输的数据量减少约30%
  2. 使用诸如PatienceDiff之类的diff算法来计算哪些部分发生了变化,并只传输那些发生了变化的部分。查看此答案以了解更多详细信息:https://stackoverflow.com/a/57103581/13774992

最新更新