Здравствуйте, мне нужна помощь с созданием чата. Использую Channels для обработки WebSockets. С документацией этого пакета я разобрался, мне нужна помощь во фронтенде. Backend:
# -*- coding: utf8 -*-
# consumers.py
import json
from channels import Group
def receive(message):
"""Принимает объекты JSON сообщения и отправляет их клиенту.
Все что в print'e - дебаг сообщения в консоли
"""
txt = message.content['text']
Group('chat').send({
'text': json.dumps({
'msg': txt
})
})
print 'Got WebSockets message ' + txt
def connect(message):
"""Подкдючает пользователя к группе "chat"
"""
message.reply_channel.send({"accept": True})
Group('chat').add(message.reply_channel)
print 'Connection established'
def disconnect(message):
"""Удаляет юзера из чата
"""
Group('chat').discard(message.reply_channel)
print 'User left'
Frontend:
//index.html
<div class="wrapper">
<div id="chat"></div>
<form id="form" action="">
<input id="msg" type="text" placeholder="type message">
<input id="submit" type="submit" value="send">
</form>
</div>
JavaScript
// main.js
$(function () {
var socket = new WebSocket('ws://' + window.location.host + '/chat/');
console.log("Connection established");
var chat = $('#chat');
var message = $('#msg').val();
socket.onmessage = function (e) {
chat.append(e.data)
};
socket.onopen = function (msg) {
msg = message;
socket.send(JSON.stringify(msg))
};
if (socket.readyState === WebSocket.OPEN) socket.onopen();
});
<div id="messages"></div>
<form>
<label for="text">Text:</label>
<textarea id="text" name="text" cols="50" rows="8"></textarea>
<button id="send">Send</button>
</form>
var messages = document.getElementById("messages");
var text = document.getElementById("text");
var button = document.getElementById("send");
var socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
var message = document.createElement("p");
var data = JSON.parse(e.data);
message.innerHTML = data.user + ": " + data.text;
messages.appendChild(message);
}
button.addEventListener("click", function(event) {
event.preventDefault();
socket.send(text.value);
text.value = '';
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Проблема с асинхронными запросамиВ хранилище vuex указано, какой элемент выпадающего списка должен быть загружен по умолчанию
Создаю расширение для автоматизации действий на страницеНе удается сымитировать keyup
Дамы и Господа, возник вопрос, можно ли на JS создавать звуки? Помню в детстве, я писал код на basic-ке, когда еще IBM 386 или IBM 486, был мечтой мечтой...
Задача состоит из решения квадратного уравнения, при D > 0, A > 0