title: Flask: A RESTful API and SocketIO Server
body: <p><strong>Background</strong></p>
  
  <p>I am trying to create a simple REST API using the Flask-RESTful extension. This API will be working primarily to manage the CRUD and authentication of users for a simple service. </p>
  
  <p>I am also trying to create a few web sockets using the Flask-SocketIO extension that these users will be able to connect to and see real-time updates for some data related to other people using the service. As such, I need to know that these users are authenticated and authorized to connect to certain sockets.</p>
  
  <p><strong>Problem</strong></p>
  
  <p>However, I'm having a bit of trouble getting set up. It seems like I am not able to have these two components (the REST API and SocketIO server) work together on the same Flask instance. The reason I say this is because when I run the following, either the REST API or the SocketIO server will work, but not both:</p>
  
  <pre><code>from flask import Flask
  from flask_restful import Api
  from flask.ext.socketio import SocketIO
  
  app = Flask(__name__)
  
  api = Api(app)
  socketio = SocketIO(app)
  
  # some test resources for the API and
  # a test emitter statement for the SocketIO server
  # are added here
  
  if __name__ == '__main__':
      app.run(port=5000)
      socketio.run(app, port=5005)
  </code></pre>
  
  <p><strong>Question</strong></p>
  
  <p>Is the typical solution for this type of setup to have two distinct instances of Flask going at the same time? For instance, would my SocketIO server have to make requests to my REST API in order to check to see that a specific user is authenticated/authorized to connect to a specific socket?</p>