聊天网站背后的想法

时间:2013-07-15 04:31:37

标签: python node.js websocket chat

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

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

因为在第一个场景中,两个用户都可以检索彼此的IP,而在第二个场景中,因为你连接到服务器,所以你不能......对吗?

非常感谢为我清除这种困惑,我很新,我非常感谢你们的任何帮助!

2 个答案:

答案 0 :(得分:0)

大多数聊天将使用推送通知系统。它将跟踪聊天中的人,当它收到聊天的新消息时,它会将其推送给当前所有人。这可以保护用户免于看到对方。

答案 1 :(得分:0)

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

这样做有几个理由。例如,假设您希望用户查看对话的最后10条消息。谁将存储此信息?一个客户?都?如果他们使用多台PC /设备会发生什么?如果其中一个离线,会发生什么?那么,您必须将消息发送到服务器,这样服务器将存储会话历史记录,始终可用。

另一个原因,假设一个用户处于离线状态。如果用户离线,则无法与他联系。你无法连接。因此,您必须向服务器发送消息,服务器将在线通知用户 因此,您可能需要连接到服务器(存储公共信息,提供脱机消息,跟踪活动用户......)。

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