Get the App
SLTechnology News&Howtos  ›  Development  › 

How to realize Private chat in online chat Room by Python

Shulou Source: shulou.com Published: 2022-06-02 13:09:44 09月24日 Update

This article mainly explains "how to achieve private chat in an online chat room with Python". Interested friends may wish to have a look. The method introduced in this paper is simple, fast and practical. Let's let the editor take you to learn "how to achieve private chat in an online chat room with Python".

Realization idea

For private conversation, I think there are two points that need to be realized.

Private chat list update

Everyone needs to have a list of private conversations and quasi-real-time updates so that the person can know who is going to talk to him in private and who he or she is talking to.

Chat room in private

For private chat rooms, it is possible to reuse group chat rooms, but there are only two people in this chat room. At the same time, for message delivery, the functions implemented in group chat can also be reused.

Front-end layout

Well, now that we have the idea, let's start the layout first. This point for a semi-disabled front end, too Nan Nan, has been engaged for a long time, only the whole layout, slightly ugly, but there is no way.

For me, who can't adjust the style, this can make some simple changes to the original CSS code.

Add a private chat next to the original list of all users

All private chats, no private conversations for the time being.

Then adjust the width of the control so that the new div is displayed next to the chat box instead of below

.chat _ left {padding:20px; width:-moz-calc (100%-440px);} .chat_right {width:199px;} .chat {width:199px;}

All right, that's all the layout of the page has to say. If you say too much, you will cry.

Chat room in private

Now to start writing back-end logic, first we need to have a chat room for private chat, then let's modify the create_room function and create a private chat.

Main.route ('/ createroom/', methods= ["GET", 'POST']) @ login_requireddef create_room (chatwith=None): if chatwith: rname = chatwith if r.exists ("pchat-" + rname +' -'+ current_user.username) is False: r.zadd ("pchat-" + rname +'-'+ current_user.username, current_user.username, 1) r.zadd ("pchat-" + rname +'-'+ current_user.username, rname, 2).

The current function can receive a parameter of chatwith. If the parameter is not None, pchat data is created in redis, that is, a private chat room.

Next, create a private chat page view function, which can be refined later to require certain permissions to initiate a private chat.

@ main.route ('/ privatechat/', methods= ['GET',' POST']) @ login_requireddef private_chat (): add private chat permission user_right = True if user_right: uname = request.args.get ('to', ") create_room (chatwith=uname) ulist = r.zrange (" pchat- "+ uname +' -'+ current_user.username, 0,-1) messages = r.zrange (" pmsg- "+ uname +'-'+ current_user.username, 0) -1, withscores=True) msg_list= [] for i in messages: msg_list.append ([json.loads (I [0]), time.strftime ("% Y/%m/%d% p%H:%M:%S", time.localtime (I [1])]) return render_template ('privatechat.html', rname=uname, user_list=ulist, msg_list=msg_list) else: pass

The following also needs a function that returns a list of private chats.

# get personal chat information @ main.route ('/ api/pchat/', methods= ['GET',' POST']) def pchat_info (user): pchat = r.keys (pattern='pchat-*') pchatlist = [] for i in pchat: i_str = str (I) user1 = i_str.split ('-', 2) [1] if user in i_str: pchatlist.append ({user1: i_str}) html = [] for i in pchatlist: html.append (f')

Tags: Chat rooms functions users code front end parameters layout transformation update online content that is reuse next individuals events ideas data permissions messages Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Docker Shulou Information macOS Microsoft Linux