1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # 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('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('message', {'type': 'system', 'msg': '用户离开'}, room=room)
- @socketio.on('offer')
- def handle_offer(data):
- # 添加发送者标识
- data['sender'] = request.sid
- # 广播给房间内其他用户
- socketio.emit('offer', data, room=data['room'], skip_sid=request.sid)
- @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)
|