如今,聊天应用程序非常普遍,可以通过Web 应用程序或移动应用程序提供。学习编写即时通讯源码有助于理解许多网络通信概念,并且有助于构建其他网络应用程序。即时通讯源码提供两方之间的通信,即发送方和接收方。发送者是发起并向其他人发送消息的人,称为接收者;另一端的接收者接收消息。发送者和接收者的角色不是固定的,在通信过程中不断交换,所以简单来说,在某一时刻,发送消息的人是发送者,接收消息的人称为接收者。在网络术语中,发送者和接收者分别表示为源和目的地。
源码:im.jstxym.top
代码:server-chat.py
port = 12345socket_list = []
users = {}
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(('',port))
server_socket.listen(5)
socket_list.append(server_socket)
while True:
ready_to_read,ready_to_write,in_error = select.select(socket_list,[],[],0)
for sock in ready_to_read:
if sock == server_socket:
connect, addr = server_socket.accept()
socket_list.append(connect)
connect.send("You are connected from:" + str(addr))
else:
try:
data = sock.recv(2048)
if data.startswith("#"):
users[data[1:].lower()]=connect
print "User " + data[1:] +" added."
connect.send("Your user detail saved as : "+str(data[1:]))
elif data.startswith("@"):
users[data[1:data.index(':')].lower()].send(data[data.index(':')+1:])
except:
continue
server_socket.close()
通信可以有多种类型,具体取决于通信方法和参与方的数量。一些场景是:
单工或单向通信:只有一方能够发送消息,其他方只能接收。
双工或双向通信:双方可以发送和接收消息。
双工通信是一种常见的通信方式,可以是一对一(简单聊天)或多对多(聊天室)。
通常,在现实世界中,通信是在理想情况下(通信方之间的距离、各方标识)直接使用语音完成的,其中发送方说出来,目标接收方在听完后做出响应。那么,这里的沟通媒介是什么?事实上,空气帮助我们的声音传播到接收器,成功的沟通依赖于空气(大风和远距离会造成麻烦)。在在线或数字通信中,空气的作用由网络通道(同轴电缆、光纤等)扮演,通信由服务器控制。服务器是一个程序,它调节发送者之间的通信和接收器。
因此,要创建 Python 即时通讯源码,必须编写一个服务器程序和客户端程序(发送者和接收者)。假设,Alice 和 Bob 两方想要互相聊天,并要求你开发一个即时通讯源码,然后作为开发人员,你必须编写一个服务器 程序和一个客户端 程序(Alice 和 Bob 将使用同一程序的不同实例) Bob 甚至更多用户)。
我们将演示上述场景,并为 Alice 和 Bob开发一个Python 即时通讯源码。Python有许多模块可以帮助我们创建与网络相关的应用程序,socket是用于低级网络编程的流行的默认Python模块之一。我们将首先列出并解释服务器和客户端程序的步骤,然后使用Python实现相同的步骤。
服务器脚本
服务器程序具有控制和调节聊天的所有逻辑,因此大多数聊天逻辑都是通过服务器程序实现的。那么通信的第一步就是识别用户,服务器是怎么做的呢?在网络通信中,用户是通过一个套接字来标识的,这个套接字只不过是IP 地址和端口地址的组合。因此,为了人类的理解,Alice 和 Bob 将聊天,但对于网络,它是两个套接字进程,发送和接收字节。该过程涉及的步骤如下:
创建套接字
通信套接字地址
继续等待传入的连接请求
连接到客户端
接收消息
解码目标用户并选择套接字
向目标客户发送消息
退出即通过终止连接来结束通信
客户机脚本由用户运行,因此相同的客户机代码将由不同的用户运行,但每个用户都有一个单独的套接字,因此它们将具有唯一的通信通道。客户端脚本过去很瘦,因为它的工作很少,即它只与服务器连接并发送和接收消息。客户端脚本中涉及的步骤包括:
为每个实例/用户创建唯一的客户端套接字
使用给定的套接字地址(IP和端口)连接到服务器
发送和接收消息
根据配置重复步骤3
关闭连接
这是client-chat.py的代码
import socketclient_socket = socket.socket()
port = 12345
client_socket.connect(('127.0.0.1',port))
#recieve connection message from server
recv_msg = client_socket.recv(1024)
print recv_msg
#send user details to server
send_msg = raw_input("Enter your user name(prefix with #):")
client_socket.send(send_msg)
#receive and send message from/to different user/s
while True:
recv_msg = client_socket.recv(1024)
print recv_msg
send_msg = raw_input("Send your message in format [@user:message] ")
if send_msg == 'exit':
break;
else:
client_socket.send(send_msg)
client_socket.close()
在上述程序中,每个用户必须在服务器脚本运行后分别运行客户端脚本。一旦客户端程序连接到服务器,客户端就必须通过提供用户名将自己注册为用户,因此剩下的通信将使用用户名完成。
行示例即时通讯源码的步骤:
1.打开终端并运行server-chat.py
2.打开新终端并运行client-chat.py
a) 输入带有“#”前缀的用户名。示例:#alice
b) 现在,按照@username:message格式将消息发送给用户。示例:@bob:Hello,bob!这是爱丽丝
3.对其他用户重复步骤2。(服务器配置最多允许5个用户,即server_socket.listen
开发即时通讯源码的挑战
在继续实际开发消息传递应用程序之前,请考虑以下挑战。这些信息将有助于克服缺陷并消除消息传递应用程序运行中的风险和未来的麻烦。
1. 定义实时特征
消息应用行业由举足轻重的巨头领导,说实话,很难与他们竞争。另一方面,我们的用户需要新的特性、稳定性和功能。要成为竞争对手,即时通讯源码应该不仅仅是即时通讯源码。在成功推出 MVP 后,想想所有让用户满意的功能:
自定义字体和贴纸
聊天静音
隐私状态更新
视频和语音通话
文件传输
2. 安全问题
高端应用安全和保护是消息应用开发过程中的首要任务。需要提供个人数据保护、消息加密和构建安全的项目架构。
确保您提供尽可能多的保护,即:
通过协议(例如 XMPP)进行端到端加密
加密密钥的使用
为安全数据存储规划产品架构
使用您的即时通讯源码时包括隐私政策
开发额外的功能,用户可以启用,以保护信使
3. 工具栈
要使您的应用程序正常工作,首先应该很好地打包和构建它。想想现有的应用程序并找到有助于定义最适合您的项目的技术堆栈的案例研究。
4. 服务器过载
随着应用程序用户数量的增加,可能会出现此问题。像 WhatsApp 这样的应用程序的优化需要大量的技术工作和有能力的开发人员。
选择服务器设置和容量,也由适当的硬件支持,以快速确保应用程序的可扩展性。确保调整服务器以在高峰负载期间提供稳定的工作。
强烈建议您计划并创建一个包含潜在服务器瓶颈的列表,并制定一个精确的行动计划。
5.即时通讯源码更新
即时通讯源码与用户保持持续联系,并不断处理其数据。在新功能部署和应用程序更新期间,请确保服务器和架构配置不会丢失现有数据。
实时即时通讯源码的可扩展性是一项相当具有挑战性的任务,它高度依赖于设置的架构。
6.稳定连接
许多原因都会影响网络丢失和智能手机互联网和Wi-Fi的切换。需要注意的是,在这种损失期间,如果出现临时中断,最后一条消息可能会丢失。
因此,您应该创建即时通讯源码,将您的应用程序概括为一个可靠的工具,它可以保持连接稳定,并在断开连接时复制丢失的消息。
开发一个即时通讯源码需要多长时间
开发您的即时通讯源码所需的时间线取决于几个因素。这些包括但不限于:
您计划为其构建产品的平台数量
功能和设计的复杂性
包含的功能数量
所选软件开发供应商的属性(位置、费率)
需要整合的第三方服务的数量和特点
任何软件开发都包含特殊服务,例如 UX/UI 设计、架构规划、iOS 开发、Android 开发、后端开发、质量保证等。
一般来说,要做好准备,开发即时通讯源码的 MVP 大约需要 3-5 个月。请注意,在大多数情况下,这仅涉及基本的应用程序功能。在预算方面,总和很大程度上取决于您选择的开发供应商。