Мгновенный обмен сообщениями с 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 является масштабируемым, в том смысле, что если один процесс не может обработать трафик, вы можете добавить больше процессов, в основном предоставляя вам много возможностей для роста.