Javascript Websocket实时发送子流程输出

Javascript Websocket实时发送子流程输出,javascript,python,websocket,subprocess,real-time,Javascript,Python,Websocket,Subprocess,Real Time,我有一个每秒输出一个单词的程序。我可以使用子进程执行程序,并实时显示每个字。我希望使用python websockets将该数据实时发送到客户端。现在,我的代码等待整个输出打印出来,然后再通过websocket发送输出。如何更改此行为,使其打印并实时发送数据 send.py: import asyncio import websockets import subprocess import sys import os async def fo(websocket, path):

我有一个每秒输出一个单词的程序。我可以使用子进程执行程序,并实时显示每个字。我希望使用python websockets将该数据实时发送到客户端。现在,我的代码等待整个输出打印出来,然后再通过websocket发送输出。如何更改此行为,使其打印并实时发送数据

send.py:

import asyncio
import websockets
import subprocess
import sys
import os

async def fo(websocket, path):
        print ("socket open")
        await websocket.send("successfully connected")

        s = []
        with subprocess.Popen(['python3', '-u','slow_print.py'], 
                              stdout=subprocess.PIPE, bufsize=0) as p:   
                    char = p.stdout.read(1)
                    while char != b'':  
                        s.append(char.decode('UTF-8'))
                        print(''.join(s), flush=True)
                        await websocket.send(''.join(s))
                        char = p.stdout.read(1)



start_server = websockets.serve(fo, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
slow_print.py:

from time import sleep
import sys

for i in range(50):
    print(str(i))
    sleep(1)
client.js

const WebSocket = require('ws');
var ws = new WebSocket('ws://localhost:8765/');

ws.onmessage = function(event) {
  console.log(event.data);
};

您先前提出的问题的副本。