這是我到目前為止開發(fā)的。首先,我的 websocket 服務(wù)器:// app.jsconst spawn = require('child_process');const WebSocket = require('ws')const wss = new WebSocket.Server({ port: 8080 })wss.on('connection',ws => { ws.on('message', message => { const python = spawn('python', ['-u', 'main.py', message]) python.stdout.on('data', function (data) { // Pipe data from python script ... dataToSend = data.toString('utf8'); ws.send(dataToSend) }); python.on('error', err => { console.log(err) }) }) ws.on('close', () => { console.log('Client has disconected') })}).on('error', err => { console.log(err)})它的基礎(chǔ)知識(shí)用于child_process生成一個(gè)傳遞message從客戶端發(fā)送的 python 腳本。 -u傳遞是為了刷新 python 腳本打印,因此它可以流出python.stdout并發(fā)送到客戶端。這是從 app.js websocket 服務(wù)器調(diào)用的我的 python 腳本:# main.pyimport time, sysi = int(sys.argv[1])while i > 0: print(i) i-=1 time.sleep(1) # this while is just anexemple of some pre-script process # (for exemple, signin on user account)# after signin...print('input something from client: ')x = input()while True: print(x) time.sleep(1) # use input x variable # here is where my code happens and the program keeps executing pass如您所見,我正在使用從服務(wù)器message傳遞過來的信息spawn()來保持我的第一個(gè)while存活。這只是一個(gè)例子,我需要用戶提供這種輸入。保持你的注意力,x = input()因?yàn)檫@是我的主要問題最后,我的客戶端 websocket// client.jsconst WebSocket = require('ws');let socket = new WebSocket("ws://localhost:8080");socket.onopen = function(e) { let someClientInfo = 2 console.log("sending data..."); socket.send(someClientInfo);};當(dāng)然,當(dāng)客戶端收到最后一行時(shí),它會(huì)一直卡住,因?yàn)樗麩o法從他這邊輸入任何內(nèi)容。他剛剛收到來自 python 的輸出流。有人知道是否可以將第二個(gè)輸入傳遞給我正在運(yùn)行的 python 腳本嗎?我開始認(rèn)為這也許是不可能的,但我不能考慮另一種方法來做到這一點(diǎn)。如果是child_process做不到的事情,我應(yīng)該尋找什么方法?我的主要目的是與服務(wù)器上運(yùn)行的 python 腳本保持有效通信,以便我可以將此輸入從客戶端傳遞給 python。我希望能夠斷開與該套接字的連接,然后再次連接并繼續(xù)接收 python 腳本輸出。到目前為止,我也找不到辦法做到這一點(diǎn)。我的主腳本不能在服務(wù)器代碼中(也許如果你對(duì) flask 的基本實(shí)現(xiàn)或類似的東西感到困惑),因?yàn)槲蚁M軌騿?dòng)多個(gè)腳本并且每個(gè)客戶端用戶都應(yīng)該能夠與他自己的 python 腳本在服務(wù)器上運(yùn)行。每個(gè)用戶都會(huì)有自己的main.py到目前為止,我還沒有考慮如何讓所有這些進(jìn)程在服務(wù)器上運(yùn)行,或者即使這樣做是安全的。對(duì)此的任何建議都將非常感激,我也將非常感激。
添加回答
舉報(bào)
0/150
提交
取消