| from flask import Flask, jsonify |
| from flask_socketio import SocketIO, emit, join_room, leave_room |
| from flask_cors import CORS |
| import os |
| import requests |
|
|
| app = Flask(__name__) |
| app.config['SECRET_KEY'] = 'ypedz_private_key' |
| CORS(app, resources={r"/*": {"origins": "*"}}) |
|
|
| socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet', max_http_buffer_size=110 * 1024 * 1024) |
|
|
| @app.route('/api-kbbi/api/v1/entry/<word>', methods=['GET']) |
| def get_kbbi(word): |
| try: |
| |
| target_url = f"https://kbbi.raf555.dev/api/v1/entry/{word}" |
| response = requests.get(target_url, timeout=5) |
| |
| |
| return response.text, response.status_code, {'Content-Type': 'application/json'} |
| except Exception as e: |
| return jsonify({"error": str(e)}), 500 |
|
|
| |
| @socketio.on('join_room') |
| def handle_join(data): |
| room = str(data.get('room', 'PUBLIC')).upper() |
| join_room(room) |
|
|
| @socketio.on('leave_room') |
| def handle_leave(data): |
| room = str(data.get('room', 'PUBLIC')).upper() |
| leave_room(room) |
|
|
| @socketio.on('broadcast_message') |
| def handle_message(data): |
| target_room = str(data.get('room', 'PUBLIC')).upper() |
| socketio.emit('receive_message', data, to=target_room) |
|
|
| if __name__ == '__main__': |
| |
| socketio.run(app, host='0.0.0.0', port=7860) |