title: Flask socket IO emit from another module
body: <p>I have almost read every piece of article available on the internet but nothing seems to work for my case. I have installed flask-socketio and everything works fine until I emit the messages from a module other than app.py.</p>
  
  <p>I have tried several ways to accomplish this and I have also read in the doc about it by using Redis but it also did not work for me. Here are the code snippets that I have.</p>
  
  <blockquote>
    <p>app.py</p>
  </blockquote>
  
  <pre><code>from flask import Flask
  from flask import request
  from flask_socketio import send, SocketIO, emit, join_room
  
  app = Flask(__name__)
  
  # This is to stop force sorting in response, by default jsonify sorts the response keys alphabetically
  app.config["JSON_SORT_KEYS"] = False
  
  socketio = SocketIO(app, cors_allowed_origins="*")
  
  @socketio.on('join')
  def client_join_room(data):
      print(type(data))
      room = data['room']
      join_room(room)
      send('you have entered the room.', room=room)
  
  
  @app.route('/msg')
  def send_message():
      socketio.emit("message", "Server message", room='my_room')
      return "I got you."
  
  
  
  if __name__ == '__main__':
      socketio.run(host="0.0.0.0", port=5001, debug=True, app=app)
  </code></pre>
  
  <blockquote>
    <p>my_module.py</p>
  </blockquote>
  
  <pre><code>def some_method():
      import app
      app.socketio.emit("message", "Some information about process", room='my_room', broadcast=True)
  </code></pre>
  
  <p>Note that I have imported app inside the method because <code>app.py</code> also imports <code>my_module.py</code></p>
  
  <ol>
  <li><p>I am able to join room.</p></li>
  <li><p>When I call localhost:5001/msg it does emit to 'my_room'.</p></li>
  <li><p>The emit does not work inside my_module.py and I have no idea why.</p></li>
  </ol>
  
  <p>I am consoling the messages that I get from the server at the front-end so I know for sure which messages are received and which are not.</p>
  
  <p>Also, the <code>some_method()</code> here is called by an API request from app.py. Just in case if that is relevant.</p>
  
  <p>I have made logger=True and then I get this message printed on the terminal for each emit call. Even with the one inside <code>some_method()</code></p>
  
  <p><strong>emitting event "message" to my_room [/]</strong></p>
  
  <p>Does that mean message is actually sent? If yes, then why am I not getting it in the jquery at front-end.</p>
  
  <p>This is what I am doing in html page</p>
  
  <pre><code>$(document).ready(function () {
          // start up the SocketIO connection to the server
          var socket = io.connect('http://localhost:5001/');
          // this is a callback that triggers when the "message" event is emitted by the server.
  
          socket.on('message', function(msg){
              console.log(msg)
          });
  
              socket.emit('join', {room: 'my_room'});
      });
  </code></pre>