Javascript 使用Websockets从Python中的程序连续流式输出
我想创建一个websocket,它将继续将程序的输出流到HTML网页 我的程序执行的过程需要2分钟才能完成,并在执行时记录输出。现在,我的代码在程序每次执行完毕时更新网页,然后立即显示网页上的所有日志。我想继续更新我的网页,即:实时流输出。我的服务器代码如下所示: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
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(消息);
关于如何做到这一点有什么想法吗