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