Комментированный код на Python:
Код: Выделить всё
@app.route("/youtube", methods=['GET', 'POST'])
@login_required
def youtube():
if request.method == 'POST':
url = request.form['hrf']
nameroom = request.form['nameRoom'] # taking video link and room name
if get_video_id(url):
print('done')
return redirect(url_for('room', nameRoom=nameroom))
else:
flash('Something went wrong, please try again.', 'danger')
nameroom = create_name_room()
return render_template('youtube.html', nameRoom=nameroom) # On this page we create a room when you click on the button
@app.route("/room/", methods=['GET', 'POST'])
@login_required
def room(nameRoom): # room page
if request.method == 'GET':
url = sess.get('current_url') # taking from the session a link to a video that would be written in /youtube
if url:
print('Room name', nameRoom)
print(url)
sess.pop('current_url', '')
return render_template('roomyutube.html', id=get_video_id(url)) #processing a page with chat and video
else:
error = 'not_room' # if we did not write a link or wrote something incomprehensible, an error page is displayed
return render_template('error.html', error=error)
@socketio.on('create_room')
def create_room(data):
room_name = data['roomName']
url = data['videoUrl']
join_room(room_name)
sess['current_url'] = url
emit('room_created', {'roomName': room_name}, room=room_name)
@socketio.on('connect')
def handle_connect():
print('Client connected')
@socketio.on('disconnect')
def handle_disconnect():
print('Client disconnected')
@socketio.on('join')
def on_join(data):
username = data['username']
room = data['room']
print('join')
join_room(room)
send(username + ' has entered the room.', room=room)
@socketio.on('leave')
def on_leave(data):
username = data['username']
room = data['room']
print('leave')
leave_room(room)
send(username + ' has left the room.', room=room)
@socketio.on('chat_message')
def handle_message(data):
message = data['message']
room = data['room']
send(message, room=room)
youtube.html:
Код: Выделить всё
var socket = io();
document.getElementById('createRoomForm').addEventListener('submit', function(event) {
event.preventDefault();
var roomName = '{{ nameRoom }}';
var videoUrl = document.getElementById('hrf').value;
socket.emit('create_room', { roomName: roomName, videoUrl: videoUrl });
});
socket.on('room_created', function(data) {
window.location.href = '/room/' + data.roomName;
});
Код: Выделить всё
var socket = io();
function sendMessage() {
var message = document.getElementById("chat-input").value;
document.getElementById("chat-input").value = "";
socket.emit('chat_message', message);
}
socket.on('chat_message', function(message) {
var chatContainer = document.getElementById("chat-container");
var chatMessage = document.createElement("p");
chatMessage.innerHTML = message;
chatContainer.appendChild(chatMessage);
});
socket.on('play_video', function(data) {
var videoUrl = data.videoUrl;
// (player.js)
});
Подробнее здесь: https://stackoverflow.com/questions/782 ... ask-socket