`I have a flask application that has a an healthcheck https route /my-route and I want my socket connection to get established at /my-route/socket , when i configure the code accordingly and build docker image and run locally, the connection established on ws://localhost:3090/my-route/socket
but after deploying the image to ECS service it does get connected on wss://dev-server/my-route/socket .
I have tried almost everything even updated the listener rules of the ALB.
I still get 503 from server. Am I missing any configurations on server or anything ?
The main thing is I can establish a connection if i do-not specify any route to sockets which is is
on “wss://dev-server”.
Need some help here.
Here is my app.py code snippet –
import eventlet
eventlet.monkey_patch()
from flask import Flask, request
from flask_socketio import SocketIO, send, emit
from chat import *
import pymongo
import os
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)
app.config['SECRET_KEY'] = ''
socketio = SocketIO(app,cors_allowed_origins="*",path='/my-route/socket')
ChatSessions = {}
mongodb_uri = os.getenv("mongodb_uri")
db_env = os.getenv("db_env")
port = os.getenv('port')
client = pymongo.MongoClient(mongodb_uri)
db = client[db_env]
career_coach_data = db['career_coach']
def setup_chat(user_id):
sid = request.sid
user_doc = career_coach_data.find_one({'user_id': user_id})
ChatSessions[sid] = {
"user_id":user_id,
"chat_instance":Chat(user_id=user_id),
"user_doc":user_doc if user_doc else None
}
@app.route('/my-route')
def flask_app():
return "Mapout Career Coach Socket Application "
@socketio.on('connect', namespace='/mapout-career-coach/socket')
def handle_connect():
sid = request.sid
user_id = request.args.get('userId')
print(f'User ID: {user_id}')
if user_id:
setup_chat(user_id)
send(" chat initiated!", namespace='/my-route/socket')
else:
print('userid not found!')
# print(ChatSessions)
@socketio.on('message', namespace='/my-route/socket')
def handle_message(message):
print(f'user message: {message}')
sid = request.sid
meta_data=ChatSessions[sid]
if sid in ChatSessions:
output = meta_data['chat_instance'].keep_chatting(message)
send(output['conv_output'], namespace='/mapout-career-coach/socket')
if output['suggestion']:
send(output['suggestion'], namespace='/mapout-career-coach/socket')
user_message = {'user': message}
coach_reply = {'coach': output}
if meta_data['user_doc']:
career_coach_data.update_one({'user_id': meta_data['user_id']},
{'$push': {'data': {'$each': [user_message, coach_reply]}}})
else:
new_user_doc = {'user_id': meta_data['user_id'], 'data': [user_message, coach_reply]}
career_coach_data.insert_one(new_user_doc)
else:
print(f'please reconnect chat session not found for sid: {sid}')
@socketio.on('disconnect', namespace='/my-route/socket')
def handle_disconnect():
sid = request.sid
if sid in ChatSessions:
del ChatSessions[sid]
print('disconnected')
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0', port=3090, debug=False)
Trying to extablish a connection to sockets at a specified route from python flask application.`
Xenomaniac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.