哪种聊天模式更好:在输入时打印消息,还是在服务器接收到消息后打印? [关闭]

Posted

技术标签:

【中文标题】哪种聊天模式更好:在输入时打印消息,还是在服务器接收到消息后打印? [关闭]【英文标题】:Which chat pattern is better: print the message upon input, or after the server receives it? [closed] 【发布时间】:2014-12-24 20:43:15 【问题描述】:

基本上,我正在开发一个聊天客户端,比如 IRC。于是,我陷入了两难:当客户端发送消息时,该消息应该立即打印在他的客户端聊天中,还是服务器应该为他重新发送消息,然后再打印?

例如,Facebook、MSN 和 Skype 使用第一种方法,但我正在构建的聊天将是一个真正的“超级书呆子”,所以我不知道我应该使用哪种模式。

请务必注意,消息可能需要一段时间才能被双方发送和接收。例如,一个简单的“Hello”可能会变成一个 100 长的 char 数组(不要问我为什么)。

根据这种情况,哪种模式会更好,为什么?

【问题讨论】:

【参考方案1】:

用户点击“发送”按钮后,消息应该出现在他的聊天中,图标为“进行中”,一旦服务器确认收到消息 - 图标应该被删除或更改为“已收到”,以防超时 - 更改图标为“错误”,可以重试发送

这样做可以满足两个要求:

    界面响应能力(您会立即看到结果) 界面信息性(您了解实际状态和正在发生的事情)

【讨论】:

这也需要持久存储,其中存储未发送的消息(以及发送/接收),以便以后可以重新发送它们:)【参考方案2】:

定义“更好”!根据better 的大多数定义,例如感知响应能力、作为一种类型进行纠正的能力等,前者更好。在更好的定义下,例如“你总是能准确地看到你的对手所看到的”,后者更好。 无论如何,大多数在本地回显文本而不等待(可变的、不可预测的)网络延迟向打字用户显示一些反馈是有原因的。

【讨论】:

以上是关于哪种聊天模式更好:在输入时打印消息,还是在服务器接收到消息后打印? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

对于运行在 YARN 上的 spark 应用,哪种部署方式更好——客户端还是集群

对生的和熟的终端模式感到困惑?

我想在 python 中使用 asyncio 在输入时打印一些东西[关闭]

哪个更好?长 TCP 连接还是长轮询?

使用 HTTP 时,哪种编码更好,base64、yEnc 还是 uuencode?

哪种设计更好:通用构建器或几种具体方法?