我正在开发 django + angular 应用程序,使用 django 频道并需要语音聊天功能。我发现使用 socket、threading 和 pyaudio 包可以简单地实现语音聊天。服务器示例:
class Server:
PORT = 6655
def __init__(self):
self.ip = socket.gethostbyname(socket.gethostname())
while True:
try:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.bind((self.ip, self.PORT))
break
except socket.error:
print("Couldn't bind to that port")
self.connections = []
self.accept_connections()
def accept_connections(self):
self.socket.listen(100)
print('Running on IP: ' + self.ip)
print('Running on port: ' + str(self.PORT))
while True:
connection, addr = self.socket.accept()
self.connections.append(connection)
threading.Thread(target=self.handle_client, args=(connection, addr)).start()
def broadcast(self, sock, data):
for client in self.connections:
if client != self.socket and client != sock:
try:
client.send(data)
except:
pass
def handle_client(self, connection, addr):
while True:
try:
data = connection.recv(1024)
self.broadcast(connection, data)
except socket.error:
connection.close()
并且有一些关于它的问题: