Мгновенный обмен сообщениями с Flask-socketIO

Я хочу реализовать сервер мгновенных сообщений, используя Flask + Flask-soketIO. со стороны клиента на мобильном телефоне (фронт в Ionic 2)

Я уже пробовал разные примеры в чате с socketIO, но мне интересно, как управлять несколькими пользователями, общающимися в чате два на два.

Я еще не знаком с архитектурами мгновенных сообщений. У меня есть несколько вопросов на эту тему:

  • Прежде всего, является ли Flask хорошей платформой для реализации обмена мгновенными сообщениями для приложений для мобильных телефонов?
    Я начал с Flask, потому что он кажется мощным и не тяжелым, как может быть django.
  • В приложении обмена мгновенными сообщениями с sokcetIO, как я могу связать пользователей два на два?
    Я пробовал этот код, но он работает для нескольких пользователей в одной комнате чата:

На стороне клиента:

    <script type="text/javascript">
        $(document).ready(function() {
            var socket = io.connect("http://127.0.0.1:5000");
            socket.on('connect', function() {
                 console.log('connected')
            });
            socket.on('message',function(msg){
                $("#messages").append('<li>' + msg + '</li>');
            });
            $("#sendButton").on('click', function() {
                console.log($('#myMessage').val());
                socket.send({ 'author': 'Kidz55',
                              'message': $('#myMessage').val()});
                $('#myMessage').val('');
            });
        });
    </script>

На стороне сервера:

@socketio.on('message')
def handle_json(json):
    print('received json: ' + str(json))
    # broadcasting to everyone who 's connected
    send(json,,broadcast=True)
  • Является ли он масштабируемым и поддерживает ли он интенсивный трафик?

1 ответ

В приложении обмена мгновенными сообщениями с sokcetIO, как я могу связать пользователей два на два?

Если в чате всегда будут два пользователя, они могут отправлять друг другу прямые сообщения. Когда клиент подключается, ему присваивается идентификатор сеанса или sid, Если вы отслеживаете эти идентификаторы и сопоставляете их с вашими пользователями, вы можете отправить сообщение определенным пользователям. Например, если вы храните sid значение для пользователя в вашей пользовательской базе данных, вы можете отправить прямое сообщение этому пользователю следующим образом:

emit('private_message', {'msg': 'hello!'}, room=user.sid)

Является ли он масштабируемым и поддерживает ли он интенсивный трафик?

Есть много факторов, которые влияют на то, сколько трафика может обработать ваш сервер. Сервер Flask-SocketIO является масштабируемым, в том смысле, что если один процесс не может обработать трафик, вы можете добавить больше процессов, в основном предоставляя вам много возможностей для роста.

Другие вопросы по тегам