Javascript Websocket实时发送子流程输出
我有一个每秒输出一个单词的程序。我可以使用子进程执行程序,并实时显示每个字。我希望使用python websockets将该数据实时发送到客户端。现在,我的代码等待整个输出打印出来,然后再通过websocket发送输出。如何更改此行为,使其打印并实时发送数据 send.py: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):
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);
};
您先前提出的问题的副本。