Report this

What is the reason for this report?

Flask With Websockets on App platform.

Posted on August 27, 2023
Edward

By Edward

Full-Stack Dev

the problem im facing is that from my html/js when i connect the the endpoint provided by the appplatform the connetion just polls and doesnt connect where is i go to the same endpoint where ive got a normal get resp all works, but no the web socket.

any ideas?

from_ flask _import_ Flask, session, render_template, request, \
    redirect, url_for, g, send_file, Blueprint, jsonify, make_response, Response
_from_ flask_socketio _import_ SocketIO, emit
_# from flask_cors import CORS
__from_ functools _import_ wraps
_import_ settings
_import_ json
_import_ uuid
_import_ jwt

git_head_hash = uuid.uuid4()

app = Flask(__name__)
app.secret_key = settings.FLASK_SECRET_KEY

socketio = SocketIO(app, cors_allowed_origins='*')


@app.route('/', methods=['GET'])
_def_ status_check():
    _return_ "App is active!"


@socketio.on('message')
_def_ handle_message(message):
    user_message = message['data']
    token = message['token']
    _# Your chatbot logic goes here to process the user_message and generate a response
_    bot_response = 'hello there'
    emit('response', {'data': bot_response})


_if_ __name__ == '__main__':
    socketio.run(app, port=5001, debug=_True_, allow_unsafe_werkzeug=_True_)


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Hey,

Your Flask code looks fine, the issue is with how the connection is being made from the client. On App Platform, services are exposed through the app’s domain over port 443 with HTTPS, so when you connect you need to use the wss:// scheme rather than ws://.

For example, instead of:

const socket = new WebSocket("ws://your-app.ondigitalocean.app/socket");

use:

const socket = new WebSocket("wss://your-app.ondigitalocean.app/socket");

That way the WebSocket upgrade happens over TLS and the connection will be established properly.

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.