ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django3 channels websocket实时读取日志返回前端

2021-08-21 11:01:08  阅读:365  来源: 互联网

标签:websocket log self Django3 channels chatSocket import message data


routing.py

1 from django.urls import re_path
2 from . import consumers
3 
4 websocket_urlpatterns = [
5     re_path(r'ws/', consumers.ChatConsumer.as_asgi()),
6 ]

consummers.py

 1 # -*- coding: utf-8 -*-
 2 # chat/consumers.py
 3 import json
 4 from channels.generic.websocket import AsyncWebsocketConsumer
 5 import asyncio
 6 import os
 7 
 8 
 9 class ChatConsumer(AsyncWebsocketConsumer):
10     async def connect(self):
11         await self.accept()
12         # g = '/usr/local/nginx/logs/access.log'
13         # f = open(g)
14         # while True:
15         #     await asyncio.sleep(1)
16         #     message = f.read()
17         #     print(message)
18         #     await self.send(text_data=json.dumps({
19         #         'message': message
20         #     }))
21 
22     async def disconnect(self, code):
23         await self.close()
24 
25     async def receive(self, text_data=None, bytes_data=None):
26         print(text_data)
27         # clean log
28         os.system("echo clean log success > /var/log/ywcontrol.log")
29         os.system("echo `date` >> /var/log/ywcontrol.log")
30         os.system("echo Let is get your act together, honey .>> /var/log/ywcontrol.log")
31         # if text_data == "exp":
32         g = '/var/log/ywcontrol.log'
33         f = open(g)
34         while True:
35             await asyncio.sleep(2)
36             message = f.read()
37             if message:
38                 try:
39                     await self.send(text_data=json.dumps({
40                         'message': message
41                     }))
42                 except Exception as e:
43                     print(e)

前端html JS部分

 1 const chatSocket = new WebSocket(
 2             'ws://'
 3             + window.location.host
 4             + '/ws/'
 5         );
 6 
 7         chatSocket.onopen = function () {
 8             chatSocket.send("Websocket send data!")
 9               };
10         chatSocket.onmessage = function(evt) {
11             console.log('here');
12             const data = JSON.parse(evt.data);
13             {#document.getElementById('chat-log').innerText=(data['message']);#}
14             document.querySelector('#chat-log').value += (data.message + '\n');
15         };
16         chatSocket.onclose = function(e) {
17             console.error('Chat socket closed unexpectedly');
18         };
19         window.onbeforeunload = function () {
20             chatSocket.close();
21         };
22         function closeWebSocket() {
23             chatSocket.close();
24 }

 

标签:websocket,log,self,Django3,channels,chatSocket,import,message,data
来源: https://www.cnblogs.com/changbo/p/15169061.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有