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


    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 + '
    ');
    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 }
  • 相关阅读:
    java 删除文件目录
    java导出echart图到excel 多张图片导出
    java导出sql文件
    split方法使用
    jqgrid列表添加单选框
    会消失的链接
    运用javascript做出链接类特效
    创建守护进程的步骤
    ext2文件系统
    C++枚举类型enum
  • 原文地址:https://www.cnblogs.com/changbo/p/15169061.html
Copyright © 2020-2023  润新知