使用Flask-socketIO即时通讯
问题描述:
我想使用Flask + Flask-soketIO实现即时通讯服务器。 与客户端在手机上(在Ionic 2前面)
我已经尝试了不同的聊天室示例与socketIO,但我想知道如何管理多个用户聊天两个两个。
使用Flask-socketIO即时通讯
我还不熟悉即时消息架构。我有几个关于这个问题的问题:
- 首先,Flask是一个很好的框架来实现手机应用程序的即时通讯?
我的确从Flask开始,因为它看起来很强大,并且不像django那样重。 - 在使用sokcetIO的即时通讯应用程序中,如何连接两个用户?
我试过这个代码,但它在同tchat室适用于多用户:
在客户端:
<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)
- 它是否可扩展,是否支持大量流量?
答
与sokcetIO即时消息应用程序,我怎么可以连接用户的两个两个?
如果它总是两个用户聊天,那么他们可以直接发送消息给对方。当客户端连接时,会分配一个会话ID或sid
。如果您跟踪这些ID并将它们映射到用户,则可以向特定用户发送消息。举例来说,如果你存储在您的用户数据库为用户sid
值,你就可以直接发送消息给用户,如下所示:
emit('private_message', {'msg': 'hello!'}, room=user.sid)
它是可扩展的,并且它支持大流量?
有很多因素会影响您的服务器可以处理多少流量。 Flask-SocketIO服务器是可扩展的,从某种意义上说,如果单个进程无法处理流量,则可以添加更多进程,基本上可以为您提供很大的增长空间。