在FlaskSocketIO聊天中设置动态聊天室 [英] Setting up dynamic chat rooms in FlaskSocketIO chat
本文介绍了在FlaskSocketIO聊天中设置动态聊天室的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想让我的小型聊天用户动态创建他们的房间.现在我在flask服务器应用程序中获得了const:
I want to let user's of my mini chat to create their rooms dynamically. For now i got const in flask server app:
# Predefined rooms for chat
ROOMS = ["Lounge", "news", "games", "coding", "food", "cars"]
用户加入/离开路由在烧瓶中:
And user join/leave routes are in flask:
@socketio.on('join')
def on_join(data):
username = data["username"]
room = data["room"]
join_room(room)
# Notofication about new user joined room
send({"msg": username + " has joined the " + room + " room."}, room=room)
@socketio.on('leave')
def on_leave(data):
leave_room(data['room'])
# Notification about leaving users
send({'msg': data['username'] + " has left the " + data['room']}, room=data['room'])
在js上.像这样:
// Select a room
document.querySelectorAll('.select-room').forEach(p => {
p.onclick = () => {
let newRoom = p.innerHTML
// Check if user already in the room
if (newRoom === room) {
msg = `You are already in ${room} room.`;
printSysMsg(msg);
} else {
leaveRoom(room);
joinRoom(newRoom);
room = newRoom;
}
};
});
// Trigger 'join' event
function joinRoom(room) {
// Join room
socket.emit('join', {'username': username, 'room': room});
// Trigger 'leave' event if user was previously on a room
function leaveRoom(room) {
socket.emit('leave', {'username': username, 'room': room});
我如何让用户动态加入他们动态创建的房间?
How i can let users, to join rooms they creating dynamicly?
推荐答案
也许您可以在服务器端执行以下操作:
Maybe you could do something like this for your server-side:
@socketio.on('join')
def on_join(data):
username = data["username"]
room = data["room"]
join_room(room)
# Notofication about new user joined room
send({"msg": username + " has joined the " + room + " room."}, room=room)
@socketio.on('leave')
def on_leave(data):
leave_room(data['room'])
# Notification about leaving users
send({'msg': data['username'] + " has left the " + data['room']}, room=data['room'])
@socketio.on('new_room')
def new_room(data):
ROOMS.append(data['new_room_name'])
room = data['new_room_name']
username = data['username']
join_room(data['new_room_name'])
# Notification about new user joined room
send({"msg": username + " has created the " + room + " room."}, room=room)
和客户端:
// Select a room
document.querySelectorAll('.select-room').forEach(p => {
p.onclick = () => {
let newRoom = p.innerHTML
// Check if user already in the room
if (newRoom === room) {
msg = `You are already in ${room} room.`;
printSysMsg(msg);
} else {
leaveRoom(room);
joinRoom(newRoom);
room = newRoom;
}
};
});
// Trigger 'join' event
function joinRoom(room) {
// Join room
socket.emit('join', {'username': username, 'room': room});
}
// Trigger 'leave' event if user was previously on a room
function leaveRoom(room) {
socket.emit('leave', {'username': username, 'room': room});
}
// Trigger this event when a new room needs to be created
function newRoom(room) {
socket.emit('new_room', {'username': username, 'room': room});
}
我尚未测试此代码,因此如果出现语法错误,或者它无法正常工作,请原谅,但我相信应该.
I have not tested this code, so please forgive me if there is a syntax error, or it just doesn't work, but I believe it should.
这篇关于在FlaskSocketIO聊天中设置动态聊天室的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文