2017-06-13 94 views
1

我想使用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) 
  • 它是否可擴展,是否支持大量流量?

回答

1

與sokcetIO即時消息應用程序,我怎麼可以連接用戶的兩個兩個?

如果它總是兩個用戶聊天,那麼他們可以直接發送消息給對方。當客戶端連接時,會分配一個會話ID或sid。如果您跟蹤這些ID並將它們映射到用戶,則可以向特定用戶發送消息。舉例來說,如果你存儲在您的用戶數據庫爲用戶sid值,你就可以直接發送消息給用戶,如下所示:

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

它是可擴展的,並且它支持大流量?

有很多因素會影響您的服務器可以處理多少流量。 Flask-SocketIO服務器是可擴展的,從某種意義上說,如果單個進程無法處理流量,則可以添加更多進程,基本上可以爲您提供很大的增長空間。