code: def read_message_handler(stream):
      
      while True:
          packet = yield from stream.get()
          session_id = packet.get('session_key')
          user_opponent = packet.get('username')
          message_id = packet.get('message_id')
          if session_id and user_opponent and message_id is not None:
              user_owner = get_user_from_session(session_id)
              if user_owner:
                  message = models.Message.objects.filter(id=message_id).first()
                  if message:
                      message.read = True
                      message.save()
                      logger.debug('Message ' + str(message_id) + ' is now read')
                      opponent_socket = ws_connections.get((user_opponent, user_owner.username))
                      if opponent_socket:
                          yield from target_message(opponent_socket,
                                                    {'type': 'opponent-read-message',
                                                     'username': user_opponent, 'message_id': message_id})
                  else:
                      pass  # message not found
              else:
                  pass  # invalid session id
          else:
              pass
docs: Send message to user if the opponent has read the message