Javascript 使用Websockets从Python中的程序连续流式输出

Javascript 使用Websockets从Python中的程序连续流式输出,javascript,python,websocket,real-time,Javascript,Python,Websocket,Real Time,我想创建一个websocket,它将继续将程序的输出流到HTML网页 我的程序执行的过程需要2分钟才能完成,并在执行时记录输出。现在,我的代码在程序每次执行完毕时更新网页,然后立即显示网页上的所有日志。我想继续更新我的网页,即:实时流输出。我的服务器代码如下所示: import nest_asyncio nest_asyncio.apply() import websockets import subprocess async def time(websocket, path): wh

我想创建一个websocket,它将继续将程序的输出流到HTML网页

我的程序执行的过程需要2分钟才能完成,并在执行时记录输出。现在,我的代码在程序每次执行完毕时更新网页,然后立即显示网页上的所有日志。我想继续更新我的网页,即:实时流输出。我的服务器代码如下所示:

import nest_asyncio
nest_asyncio.apply()
import websockets
import subprocess

async def time(websocket, path):
    while True:
        command = ['myprogram', 'args']
        process = subprocess.Popen(command, stdout=subprocess.PIPE, universal_newlines=True, bufsize=-1)
        now = process.stdout.read()
        await websocket.send(now)

start_server = websockets.serve(time, "127.0.0.1", 5670)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
<!DOCTYPE html>
<html>
    <head>
        <title>WebSocket</title>
    </head>
    <body>
        <script>
            var ws = new WebSocket("ws://127.0.0.1:5670/"),
                messages = document.createElement('ul');
            ws.onmessage = function (event) {
                var messages = document.getElementsByTagName('ul')[0],
                    message = document.createElement('li'),
                    content = document.createTextNode(event.data);
                message.appendChild(content);
                messages.appendChild(message);
            };
            document.body.appendChild(messages);
        </script>
    </body>
</html>
我的客户端看起来是这样的:

import nest_asyncio
nest_asyncio.apply()
import websockets
import subprocess

async def time(websocket, path):
    while True:
        command = ['myprogram', 'args']
        process = subprocess.Popen(command, stdout=subprocess.PIPE, universal_newlines=True, bufsize=-1)
        now = process.stdout.read()
        await websocket.send(now)

start_server = websockets.serve(time, "127.0.0.1", 5670)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
<!DOCTYPE html>
<html>
    <head>
        <title>WebSocket</title>
    </head>
    <body>
        <script>
            var ws = new WebSocket("ws://127.0.0.1:5670/"),
                messages = document.createElement('ul');
            ws.onmessage = function (event) {
                var messages = document.getElementsByTagName('ul')[0],
                    message = document.createElement('li'),
                    content = document.createTextNode(event.data);
                message.appendChild(content);
                messages.appendChild(message);
            };
            document.body.appendChild(messages);
        </script>
    </body>
</html>

网袋
var ws=new-WebSocket(“ws://127.0.0.1:5670/”,
messages=document.createElement('ul');
ws.onmessage=函数(事件){
var messages=document.getElementsByTagName('ul')[0],
message=document.createElement('li'),
内容=document.createTextNode(event.data);
message.appendChild(内容);
messages.appendChild(message);
};
document.body.appendChild(消息);
关于如何做到这一点有什么想法吗