聊天网站背后的想法

Posted

技术标签:

【中文标题】聊天网站背后的想法【英文标题】:the idea behind chat website 【发布时间】:2013-07-15 04:31:37 【问题描述】:

这些天我一直在学习 Python 套接字,http 请求/响应处理,我对服务器编程还是很陌生,我对聊天网站背后的基本思想有疑问。

在聊天网站,如 Omegle 或 Facebook 的聊天中,两个人如何互相交谈?他们自己计算机上的套接字是否直接相互连接,或者...家伙 A 向 Web 服务器发送消息,服务器将此消息发送给家伙 B,反之亦然?

因为在第一种情况下,两个用户都可以检索到对方的 IP,而在第二种情况下,由于您要连接到服务器,所以不能......对吗?

非常感谢为我解决了这个困惑,我是新手,非常感谢你们的帮助!

【问题讨论】:

【参考方案1】:

通常它们都连接到服务器。

这样做有几个原因。例如,假设您希望您的用户看到对话的最后 10 条消息。谁来存储这些信息?一个客户?两个都?如果他们使用不止一台 PC/设备会怎样?如果其中一个离线怎么办?好吧,您必须将消息发送到服务器,这样服务器将存储对话历史记录,始终可用。

另一个原因,假设一个用户离线。如果用户离线,您将无法与他联系。你无法连接。所以你必须向服务器发送消息,一旦用户上线,服务器就会通知用户。 因此,您可能需要连接到服务器(存储公共信息、提供离线消息、跟踪活跃用户......)。 还有另一个原因,如果你想让两个用户直接连接,你需要其中一个启动一个监听(公共 IP):端口的服务器,并让另一个连接到该 ip:端口。嗯,这是个问题。如果您使用客户端->服务器模型,则不必担心这一点,因为您可以轻松地在服务器中打开一个端口,完全不需要路由器和 NAT。

【讨论】:

非常感谢,所以这基本上是p2p和client/server的区别。顺便问一下,您知道任何可以帮助构建实时网络聊天应用程序的好的客户端/服务器框架吗? Node.js + Socket.io 已经足够了。但是任何支持 websocket 的东西都可以工作,这确实是“实时”的关键。 抱歉,我的意思是 video 基于客户端/服务器结构的聊天应用程序。我找到了这个 WebRTC,但它是 p2p,所以它可能不安全..【参考方案2】:

大多数聊天将使用推送通知系统。它将跟踪聊天中的人,并且当它收到聊天的新消息时,它会将其推送给当前在其中的所有人。这样可以防止用户互相看到。

【讨论】:

以上是关于聊天网站背后的想法的主要内容,如果未能解决你的问题,请参考以下文章

浅尝Facebook发送消息背后的用户体验行为

在 Twitter Bootstrap 中实现下拉菜单背后的想法是啥? [关闭]

在 NumPy 中将 4D 数组重塑为 2D 数组背后的直觉和想法

在javascript中获取和设置背后的想法是什么?

Facebook 实时聊天背后的概念(数据传输)是啥?

阿里P8大牛透漏高薪背后的真正逻辑