mirror of https://github.com/interlegis/sapl.git
Edward Ribeiro
3 years ago
8 changed files with 126 additions and 1 deletions
@ -0,0 +1,19 @@ |
|||
import os |
|||
|
|||
import django |
|||
from channels.http import AsgiHandler |
|||
from channels.auth import AuthMiddlewareStack |
|||
from channels.routing import ProtocolTypeRouter, URLRouter |
|||
import sapl.painel.routing |
|||
|
|||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sapl.settings') |
|||
django.setup() |
|||
|
|||
application = ProtocolTypeRouter({ |
|||
"http": AsgiHandler(), |
|||
"websocket": AuthMiddlewareStack( |
|||
URLRouter( |
|||
sapl.painel.routing.websocket_urlpatterns |
|||
) |
|||
), |
|||
}) |
@ -0,0 +1,21 @@ |
|||
import json |
|||
from channels.generic.websocket import WebsocketConsumer |
|||
|
|||
|
|||
class ChatConsumer(WebsocketConsumer): |
|||
def connect(self): |
|||
self.accept() |
|||
print('conectado ao ws') |
|||
|
|||
def disconnect(self, close_code): |
|||
print('desconectado ao ws') |
|||
pass |
|||
|
|||
def receive(self, text_data): |
|||
print('receive message') |
|||
text_data_json = json.loads(text_data) |
|||
message = text_data_json['message'] |
|||
|
|||
self.send(text_data=json.dumps({ |
|||
'message': message |
|||
})) |
@ -0,0 +1,6 @@ |
|||
from django.urls import re_path |
|||
from . import consumers |
|||
|
|||
websocket_urlpatterns = [ |
|||
re_path(r'ws/painel/(?P<room_name>\w+)/$', consumers.ChatConsumer.as_asgi()), |
|||
] |
@ -0,0 +1,51 @@ |
|||
<!-- chat/templates/chat/room.html --> |
|||
<!DOCTYPE html> |
|||
<html> |
|||
<head> |
|||
<meta charset="utf-8"/> |
|||
<title>Chat Room</title> |
|||
</head> |
|||
<body> |
|||
<textarea id="chat-log" cols="100" rows="20"></textarea><br> |
|||
<input id="chat-message-input" type="text" size="100"><br> |
|||
<input id="chat-message-submit" type="button" value="Send"> |
|||
{{ room_name|json_script:"room-name" }} |
|||
<script> |
|||
const roomName = JSON.parse(document.getElementById('room-name').textContent); |
|||
|
|||
const chatSocket = new WebSocket( |
|||
'ws://' |
|||
+ window.location.host |
|||
+ '/ws/painel/' |
|||
+ roomName |
|||
+ '/' |
|||
); |
|||
|
|||
chatSocket.onmessage = function(e) { |
|||
const data = JSON.parse(e.data); |
|||
document.querySelector('#chat-log').value += (data.message + '\n'); |
|||
}; |
|||
|
|||
chatSocket.onclose = function(e) { |
|||
console.error('Chat socket closed unexpectedly'); |
|||
}; |
|||
|
|||
document.querySelector('#chat-message-input').focus(); |
|||
document.querySelector('#chat-message-input').onkeyup = function(e) { |
|||
if (e.keyCode === 13) { // enter, return |
|||
document.querySelector('#chat-message-submit').click(); |
|||
} |
|||
}; |
|||
|
|||
document.querySelector('#chat-message-submit').onclick = function(e) { |
|||
const messageInputDom = document.querySelector('#chat-message-input'); |
|||
const message = messageInputDom.value; |
|||
chatSocket.send(JSON.stringify({ |
|||
'message': message |
|||
})); |
|||
messageInputDom.value = ''; |
|||
}; |
|||
</script> |
|||
</body> |
|||
</html> |
|||
|
Loading…
Reference in new issue