当前位置: 首页 > Web前端 > HTML

即时消息是如何做到的?

时间:2023-04-03 01:02:12 HTML

InstantMessenger(IM)软件大多基于TCP/IP和UDP进行通信。TCP/IP和UDP是两种建立在底层IP协议之上的通信传输协议。TCP/IP是一种以数据流形式存在的文件传输协议,将传输的数据进行分割、打包,然后利用两台机器之间建立的虚电路进行连续、双向、严格保证数据正确性。UDP是一种数据报形式的文件传输协议,对分割数据的到达顺序没有要求。QQ使用UDP协议收发消息。当你的机器安装了OICQ后,其实你既是服务器(Server)又是客户端(Client)。当您登录OICQ时,您的OICQ作为客户端连接到腾讯的主服务器。当你看到谁在线时,你的OICQ又作为客户端从QQ服务器读取在线用户列表。当你和你的OICQ伙伴聊天时,如果你和对方的连接比较稳定,那么你和他的聊天内容都是以UDP的形式在电脑之间传输的。如果你和对方的连接不是很稳定,QQ服务器会中转你的聊天内容。其他即时通讯软件的原理与此类似。一般步骤:首先,用户A输入用户名和密码登录即时通讯服务器,服务器通过读取用户数据库验证用户身份。如果用户名和密码正确,则用户A的IP地址和IM客户端软件注册成功。版本号和使用的TCP/UDP端口号,然后返回用户A登录成功的标识。此时用户A在IM系统中的状态为在线(OnlinePresence)。其次,服务器根据用户A在IM服务器上保存的好友列表(BuddyList),将用户A的在线信息发送给同时在线的即时通讯好友的PC,该信息包括在线状态、IP地址、IM客户端收到这些信息后,PC桌面会弹出一个小窗口,提示即时通讯好友PC上的即时通讯软件。第三步,即时通讯服务器将用户A在服务器上保存的好友列表及相关信息返回给用户A的PC,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(Port)号等,用户APC上的IM客户端接收到这些好友列表后,会显示好友列表及其在线状态。接下来,如果用户A想和他的网友用户B聊天,他会通过服务器发送的用户B的IP地址和TCP端口号等信息,直接将聊天信息发送到用户B的PC上。用户B的IM客户端软件收到后显示在屏幕上,然后用户B直接回复用户A的PC,这样双方的即时短信就不会通过IM服务器中转,而是点对点的通过网络直接通信,这称为点对点通信(PeerToPeer)。在商业即时通讯系统中,如果用户A和用户B之间的点对点通信由于防火墙、网速等原因难以建立或速度很慢,IM服务器也提供消息中转服务,即用户A和用户B的所有即时消息都先发送到IM服务器,再由服务器转发给对方。在早期的IM系统中,IM客户端与IM服务器之间的通信采用UDP协议。UDP协议是一种不可靠的传输协议。在IM客户端之间的直接通信中,采用了具有可靠传输能力的TCP协议。随着用户需求和技术环境的发展,目前主流的即时通讯系统倾向于在即时通讯客户端之间、即时通讯客户端与即时通讯服务器之间采用TCP协议。作者/luluhulian来源/APICloud官方论坛