与 Django Channels 的语音聊天集成

时间:2021-03-28 01:21:05

标签: django websocket django-channels pyaudio

我正在开发 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()

并且有一些关于它的问题:

  1. 我可以在 Django 频道上实现这个解决方案吗?
  2. 我可以在 Django 频道中使用这样的线程吗,线程安全吗?

0 个答案:

没有答案