def received_message(self, message): print("resp:", message) msg = json.loads(str(message)) if type(msg) is dict: event = msg['event'] content = str(msg["content"]) print('event:', event) print('content:', content) if ("sendUdp" == event): #1 print("sendUdp") #start udp channel for peeA #send upd to peerA for three times content = content.replace("\'", '\"') peerdict = json.loads(content) peerA = Peer() peerA.__dict__ = peerdict peerAIp = peerdict["ip"] peerAUdpPort = peerdict["udpPort"] print("peerAIp:", peerAIp) print("peerAUdpPort:", peerAUdpPort) elif ("peerIsReady" == event): #2 print("peerIsReady") #start udp channel #sendUpdtoCientB for three times, elif ("udpIsReady" == event): #3 print("udpIsReady") #requst for file elif ("requestFile" == event): #4 print("requestFile") #send file UPD to clientA elif ("fileIsReady" == event): #5 print("FileIsReady") # start to receive upd file elif ("fileReceiving" == event): #6 print("FileReceiving") elif ("udpFileReceiveFinshed" == event): #7 print("udpFileReceiveFinshed")
def received_message(self, message): print("resp:", message) msg = json.loads(str(message)) if type(msg) is dict: event = msg['event'] content = str(msg["content"]) print('event:', event) print('content:', content) if ("sendUdp" == event): #1 print("sendUdp") requstId = int(msg["requstId"]) content = content.replace("\'", '\"') peerdict = json.loads(content) peerA = Peer() peerA.__dict__ = peerdict print("peerA:", peerA.ip, peerA.port) #start udp channel for peeA #不能用本地IP,需要用对应的公网IP,同时给A和Server发UDP请求 peerBIp = content = str(msg["peerIp"]) print("start udp client:", peerA.ip, peerA.port, serverIp, self.udpUtil.udpPort) self.udpUtil.startAsynUDPClient(peerA.ip, self.udpUtil.udpPort, serverIp, self.udpUtil.udpPort) #保证Udp启动成功 time.sleep(3) #send PeerB to server peer = Peer(0, "test", peerBIp, wsPort, self.udpUtil.udpPort) peerJson = json.dumps(peer.__dict__, sort_keys=True, indent=4, separators=(',', ':')) message = ('{"event":"peerIsReady","requstId":%d, "content":%s}' % (requstId, peerJson)) self.send(message) print("peerB send message to server:", message) elif ("peerIsReady" == event): #2 print("peerIsReady") content = content.replace("\'", '\"') peerdict = json.loads(content) peerB = Peer() peerB.__dict__ = peerdict #start udp channel #用公网地址 peerAIp = content = str(msg["peerIp"]) self.udpUtil.startUDPServer(peerAIp, self.udpUtil.udpPort) print("peerA updserver is reay:", peerAIp, self.udpUtil.udpPort) #这里的peerB.udpPort是clientUdpPort #sendUpdtoCientB for three times, self.udpUtil.startUDPClient(peerB.ip, peerB.udpPort) print("peerA sended upd to :", peerB.ip, peerB.udpPort) elif ("udpIsReady" == event): #3 print("udpIsReady") #requst for file elif ("requestFile" == event): #4 print("requestFile") #send file UPD to clientA elif ("fileIsReady" == event): #5 print("FileIsReady") # start to receive upd file elif ("fileReceiving" == event): #6 print("FileReceiving") elif ("udpFileReceiveFinshed" == event): #7 print("udpFileReceiveFinshed") # close udp socket else: print("client unknow message")
if ("e" == msg): print("exit") sys.exit(0) elif ("2" == msg): print("requst for hole") message = '{"event":"hole", "content":{"id":"1","name":"bill","ip":"12.168.1.1"}}' elif ("3" == msg): print("send message to peer") message = '{"event":"hole", "content":{"id":"1","name":"bill","ip":"12.168.1.1"}}' else: print("test beartbeat") message = '{"event":"hearbeat", "content":{"id":"1","name":"bill","ip":"12.168.1.1"}}' ws.send(message) except KeyboardInterrupt: ws.close() if __name__ == "__main__": startClient() message = '{"event":"hole", "content":{"id":1,"ip":"12.168.1.1"}}' msg = json.loads(str(message)) content = str(msg["content"]) content = content.replace("\'", '\"') peerdict = json.loads(content) p = Peer() p.__dict__ = peerdict print("peer:", peerdict["ip"]) print("ok")