1

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

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

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

非常感谢为我消除了这种困惑,我是新手,非常感谢你们的帮助!

4

2 回答 2

0

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

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

另一个原因,假设一个用户离线。如果用户离线,您将无法与他联系。你无法连接。所以你必须向服务器发送消息,服务器会在用户上线后通知用户。
因此,您可能需要连接到服务器(存储公共信息、提供离线消息、跟踪活跃用户......)。

还有另一个原因,如果您希望两个用户直接连接,您需要其中一个用户启动一个监听(公共 IP):端口的服务器,并让另一个连接到该 ip:端口。嗯,这是个问题。如果您使用客户端-> 服务器模型,则不必担心这一点,因为您可以轻松地在服务器中打开一个端口,完全不需要路由器和 NAT。

于 2013-07-15T08:08:58.587 回答
0

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

于 2013-07-15T04:36:56.270 回答