![]() |
1
1
我认为你的“最佳”解决方案实际上是你应该追求的。 每个textfield都有一个模型,模型有一个历史记录(一个filo存储最后一个,比如10个值)。 每次编辑该文本字段时,都会将整个文本推送到模型中,并将增量发送到其他连接的客户机。 当其他客户机接收到数据时,他们只是从模型中选择最后一个值并将其合并到接收到的数据中。 您可以通过在中间放置一个空闲计时器来优化机制:当用户在文本字段中键入某个内容时,您将该模型标记为“tobesenthroughthenet”,然后启动一个计时器。当计时器“嘀嗒”(timerevent.timer)停止时,收集标记的数据并将其发送到其他客户机。只要记住每次用户实际输入时都要重置计时器(semplication可以是keydown=reset,keyup=start)。 还有一个优化可以发送压缩后的bytearray中的数据,但这需要您编写自己的协议,而且可能不是一个简单而快速的路径:) |
![]() |
2
1
如果要求每个人都可以同时编辑文档,并且更改应该传播给每个人,并且不应该丢失任何更改,那么这是一个非常重要的问题。有几种不同的方法,但一种非常强大的方法是 Operational Transformation . 这与谷歌文档用于协作编辑的算法相同。 Understanding and Applying Operational Transformation 还有服务员 hacker news 讨论可能是其他开始的好地方。 这个 Wave Protocol 是作为开放源码发布的,因此您可以查看它是如何实现的。 当然,您可以放弃复杂的同步,只允许人们轮流进行,一次只能有一个人编辑文档,而这个人只需将更改推送到组的其余部分。 |
![]() |
anakin59490 · 角度5-组件和服务之间的通信 7 年前 |
|
Timo · Docker容器无法到达本地主机端口4444。为什么? 8 年前 |
![]() |
Herobrine · C++程序和未识别程序之间的双向通信 8 年前 |
|
user2475448 · 卡夫卡比拉比特MQ有什么优势? 8 年前 |
|
Bobby_th · 访问其他java类的片段 9 年前 |