From 150ba7b30fc9fd97ccdd444c4c5cbf7f9470c58f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A1=8C=E8=80=85?= <31663805+0xdeciverAngel@users.noreply.github.com> Date: Fri, 15 Nov 2019 21:29:11 +0800 Subject: [PATCH] can send to spec client room --- example/ser.py | 83 ++++++++++++++++++++++++++++++++++++++++++++ example/web.html | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 example/ser.py create mode 100644 example/web.html diff --git a/example/ser.py b/example/ser.py new file mode 100644 index 0000000..ad6a158 --- /dev/null +++ b/example/ser.py @@ -0,0 +1,83 @@ +from websocket_server import WebsocketServer +import time +sample = { + 'roomid' : 0, + 'p1': {}, + 'p2':{} + + +} +room = [] +# send_direct={} +# Called for every client connecting (after handshake) +def new_client(client, server): + print("New client connected and was given id %d" % client['id']) + # server.send_message_to_all("Hey all, a new client has joined us") + server.send_message(client,"welcom~") + + + +# Called for every client disconnecting +def client_left(client, server): + print("Client(%d) disconnected" % client['id']) + + +# Called when a client sends a message +def message_received(client, server, message): + if len(message) > 200: + message = message[:200] + '..' + + for p in range(0,len(room)): + # print(room[p]['roomid']) + if ((room[p]['p1']) == client): + key = p + server.send_message(room[key]['p2'], "somebody:"+message) + break + if ((room[p]['p2']) == client): + key = p + server.send_message(room[key]['p1'], "somebody:"+message) + break + + print("Client(%d) said: %s" % (client['id'], message)) + if (message == "/room"): + tmp_sample = sample + tmp_sample['p1'] = client + tmp_sample['roomid']=hash(time.time()) + room.append(tmp_sample) + server.send_message(client,"creat room success: \n"+str(tmp_sample['roomid'])) + + print("room:", room) + exp_input="" + try: + if(message[:5]=="/room"): + exp_input = message.split('=')[1] + # print(exp_input) + for p in range(0,len(room)): + print(room[p]['roomid']) + if (str(room[p]['roomid']) == exp_input): + key = p + + room[p]['p2']=client + # print(p) + + server.send_message(room[key]['p1'], "success join room") + server.send_message(room[key]['p2'], "success join room") + + break + + if (message == '/all'): + print(room) + + except: + pass + + # server.send_message_to_all("Client(%d) said: %s" % (client['id'], message)) + # server.send_message(client,"Client(%d) said: %s" % (client['id'], message)) + + +PORT=9001 +server = WebsocketServer(PORT) +server.set_fn_new_client(new_client) +server.set_fn_client_left(client_left) +server.set_fn_message_received(message_received) +server.run_forever() \ No newline at end of file diff --git a/example/web.html b/example/web.html new file mode 100644 index 0000000..64b87f8 --- /dev/null +++ b/example/web.html @@ -0,0 +1,90 @@ + + +
+ +