如何解决如何优化定时传输十六进制字符串?
实现语言是Javascript。 我必须定期传输长的十六进制字符串(实际上格式并不重要,因为我可以在发送端转换为任何格式并在接收端重新转换)。 由于这些六边形字符串几乎相同,因此按原样发送它们并不是最佳选择。相反,我想发送一个差异。
这是伪代码:
setInterval(function() {
//Using websocket,send message to server
sendSomeMessage(myHexString);
},10000);
这里 myHexString 是异步计算的。它可能会或可能不会在间隔内发生变化。这部分很容易优化。我可以与以前的版本进行比较并抑制发送。 我需要的是能够在实际发生更改时仅发送差异,例如:
setInterval(function() {
//Using websocket,send message to server
myDiff = diff(oldString,newString);
if (myDiff.length > 0)
sendSomeMessage(myDiff);
},10000);
在接收端,我的代码如下:
newVersion = getNewVersion(oldVersion,myDiff);
我在 Javascript 中找到了一些差异库,但它们就是这样做的:显示差异。我希望能够将差异结果应用于一个内容并获取目标内容。 编辑:在 Javascript 中有一些实现 Linux diff 和 patch 的东西会很好。
解决方法
- 当您使用 base64 编码而不是十六进制编码 (base16) 时,您可以将传输的数据量减少约 30%。
- 使用诸如
PatienceDiff
之类的 diff 算法来计算哪些部分发生了变化,并只传输那些发生了变化的部分。查看此答案以了解更多详细信息:https://stackoverflow.com/a/57103581/13774992
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。