作者gn00618777 (非常念舊)
看板Python
標題[問題] websocket + Flask + python
時間Wed Apr 8 21:44:42 2015
我用 flask 寫了一個 UI,關於 serial port 的接收,安裝了 pserial,大致這樣
@app.route("/OOOOXXXXX")
def OOOOXXX():
import serial
port = serial.Serial("/dev/ttyO2", baudrate=115200, timeout=3.0)
while True:
data=port.read(9999)
if data>0 :
templateData={
'result' : data
}
break
return render_template("XXX.html",**templateData)
XXX.html 就是給客戶端看的介面,然後我這個XXX.html裡面有一個自動向 host 端
要資料的 submit,一直進來這個 OOOOXXX function 去讀取傳入 /dev/ttyO2的資料,但
這樣從客戶端那邊去看,網頁會一直顯示出連線中,然後我從putty serial port傳入的
訊息會有點延遲出現在 XXX.html上,感覺是個很粗糙的作品。之前有查過 websocket
這方面的訊息。參考網址如下
https://kheresy.wordpress.com/2013/04/02/html5-websocket-client/
他用意是使用 html 頁面內加上一些js,連線到 server ,server再 echo回來到html
但我突然想到,如果我要進來 OOOOXXX function 中,我仍然要在 XXX.html頁面
執行 js 讓它一直向 host 要資料,也就是他必須submit然後進入到 OOOOXXX function
中執行 pserial 的一些程式,我還是要考慮要怎樣把接收到的資料丟到 XXX.html
這樣不就無法跟 websocket 漂亮的結合了? 結果還是會老樣子。 不知道有啥建議, 謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.158.141
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1428500687.A.479.html
1F:推 mars90226: 你的server端要分成html response跟json response 04/08 22:20
2F:→ mars90226: 不對...websocket的話,你server端也會有類似client 04/08 22:21
3F:→ mars90226: 端websocket的code,就是onXXX之類的handler 04/08 22:22
4F:→ mars90226: 你在server端那邊建好連結以後就可以不斷送訊息 04/08 22:23
5F:→ gn00618777: XD 不太懂。意思是說我後端也要有個 websocket server 04/08 23:05
6F:→ gn00618777: 嗎? 然後XXX.html(有包含 websocket)和 host 端的 04/08 23:08
7F:→ gn00618777: websocket code 做連結? 04/08 23:08
8F:→ gn00618777: 總結一下,就是XXX.html(有包含websocket client) 04/08 23:10
9F:→ gn00618777: 然後 host 也有個 websocket,但問題是在python中 04/08 23:10
10F:→ gn00618777: 我要怎把資料丟到這個websocket?,websocket他仍然 04/08 23:11
11F:→ gn00618777: 寫在html中,我不知道怎在OOOOXXX function把資料 04/08 23:11
12F:→ gn00618777: 送到 websocket 好讓XXX.html 去讀取資料 04/08 23:12
13F:→ gn00618777: 這樣我還是只有想到 templateData 的方法用{{}}把值 04/08 23:13
14F:→ gn00618777: 丟到 websocket server 04/08 23:13
16F:→ mars90226: 這篇他雖然不是用websocket,不過用了SocketIO 04/09 00:55
17F:→ mars90226: SocketIO很類似websocket,不過有做額外的fallback 04/09 00:57
18F:→ mars90226: 如果你有寫過Ajax的話,這概念其實挺類似,只是server 04/09 00:58
19F:→ mars90226: 變成websocket的server 04/09 00:58
20F:→ gn00618777: 太神拉,怎找到這種東西,我假日好好來研究^^,謝謝分 04/09 09:25
21F:→ gn00618777: 享 04/09 09:25