实现语言为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和补丁,那就太好了。
- 使用base64编码而不是十六进制编码(base16(时,可以将传输的数据量减少约30%
- 使用诸如
PatienceDiff
之类的diff算法来计算哪些部分发生了变化,并只传输那些发生了变化的部分。查看此答案以了解更多详细信息:https://stackoverflow.com/a/57103581/13774992