def handle_my_custom_event(json, methods=['GET', 'POST']): if json.get('message') is not None: message = Message(text=json.get('message'), user_id=current_user.id) message = message.validate() json.update({'username': current_user.username}) db.session.add(message) db.session.commit() print('received my event: ' + str(json)) socketio.emit('my response', json, callback=messageReceived)
def user_joined(): if current_user.is_authenticated: socketio.emit( 'enter chat', {'message': '{0} has joined'.format(current_user.username)}, broadcast=True) else: return False
def message_created(data): room_code = data['room_id'] message = data['text'] user = User.query.filter_by(username=data['username']).first() m = Message(room_id=room_code, user_id=user.id, content=data['text']) db.session.add(m) db.session.commit() rooms = socketio.server.rooms(request.sid) print(rooms, file=sys.stderr) socketio.emit('message_created', { 'username': data['username'], 'text': data['text'] }, to=room_code)
def generate_room(data): user = User.query.filter_by(username=data['username']).first() room = Room() room.name = data['room_name'] user.rooms.append(room) db.session.commit() message = Message( user_id=user.id, room_id=room.id, content=f"{user.username} just created room <b>{room.id}</b>") db.session.add(message) db.session.commit() socketio.emit('room_created_sucessfully', {'room_id': room.id, \ 'room_name':room.name \ }, to=request.sid)
def escape_room(data): user = User.query.filter_by(username=data['username']).first() # user = User.query.filter_by(username=current_user.username).first() room = Room.query.filter_by(id=data['room_id']).first() # print(f'before: {room.users}', file=sys.stderr) message = None for u in room.users: print(f'{u}', file=sys.stderr) if u.id == user.id: room.users.remove(u) message = Message(user_id=user.id, room_id=room.id, content=f" just left chat.") db.session.add(message) db.session.commit() break else: return if len(room.users) <= 0: for m in room.messages: db.session.delete(m) db.session.delete(room) db.session.commit() print(f'after: {room.users}', file=sys.stderr) socketio.emit("leave_room_success", { 'room_id': data['room_id'], 'username': data['username'], 'message': message.content }, room=str(data['room_id']))
def re_messages(data): limit = data['limit'] offset = data['offset'] room_id = int(data['room_id']) messages = Message.query.\ filter_by(room_id=room_id).\ order_by(Message.time_stamp.desc()).\ offset(offset).\ limit(limit).\ all() print(f'offset: {offset}, limit: {limit}, messages are: {messages}') json_data = {'concat': data['concat'], 'mes': []} for message in messages: content = message.content username = message.user.username json_data['mes'].append({'content': content, 'username': username}) # print(json_data['mes'], file=sys.stderr) socketio.emit('messages_requested', json.dumps(json_data), to=request.sid)
def enter_room(data): user = User.query.filter_by(username=data['username']).first() # user = User.query.filter_by(username=current_user.username).first() room = Room.query.filter_by(id=data['room_id']).first() if room == None: print(f"room not found", file=sys.stderr) return room_name = room.name message = None if room not in user.rooms: user.rooms.append(room) db.session.commit() message = Message(user_id=user.id, room_id=room.id, content=f" just joined chat.") db.session.add(message) db.session.commit() else: print(f"user's aldready in room", file=sys.stderr) m = "" if (message): m = message.content socketio.emit('enter_room_success', {'room_id': room.id, 'room_name': room_name, 'username': data['username'], \ 'message': m}, room=str(data['room_id']))