12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- # app.py
- from flask import Flask, render_template, request
- from flask_socketio import SocketIO, join_room, leave_room
- app = Flask(__name__)
- app.config['SECRET_KEY'] = 'secret!'
- socketio = SocketIO(app, cors_allowed_origins="*")
- rooms = {}
- @socketio.on('join')
- def on_join(data):
- room = data['room']
- join_room(room)
- rooms[request.sid] = room
- socketio.emit('user_joined', request.sid, room=room, skip_sid=request.sid)
- socketio.emit('message', {'type': 'system', 'msg': '新用户加入'}, room=room)
- @socketio.on('leave')
- def on_leave():
- room = rooms.get(request.sid)
- if room:
- leave_room(room)
- del rooms[request.sid]
- socketio.emit('user_left', request.sid, room=room)
- socketio.emit('message', {'type': 'system', 'msg': '用户离开'}, room=room)
- @socketio.on('offer')
- def handle_offer(data):
- data['sender'] = request.sid
- socketio.emit('offer', data, room=data['target'])
- @socketio.on('answer')
- def handle_answer(data):
- data['sender'] = request.sid
- socketio.emit('answer', data, room=data['target'])
- @socketio.on('candidate')
- def handle_candidate(data):
- data['sender'] = request.sid
- socketio.emit('candidate', data, room=data['target'])
- @socketio.on('answer')
- def handle_answer(data):
- data['sender'] = request.sid
- # 发送给指定用户
- socketio.emit('answer', data, room=data['target'])
- @socketio.on('candidate')
- def handle_candidate(data):
- data['sender'] = request.sid
- socketio.emit('candidate', data, room=data['target'])
- @app.route('/room/<room_id>')
- def room(room_id):
- return render_template('room.html', room_id=room_id)
- if __name__ == '__main__':
- socketio.run(app, host='0.0.0.0', port=15000, debug=True, allow_unsafe_werkzeug=True)
|