一開始我是研究了websockets
https://developers.cloudflare.com/workers/examples/websockets/
esp32cam--workers--手機瀏覽器
其中workers的邏輯是,把esp32cam的圖片資料儲存在一個記憶體變數中,然後在手機瀏覽器請求的時候,把這個圖片轉發出去。
如果您的應用程式需要在多個 WebSocket 連線之間進行協調,例如聊天室或遊戲比賽,您將需要客戶端將訊息傳送到單點協調。Durable Objects 為 Cloudflare Workers 提供單點協調,並且通常與 WebSockets 並行使用,以在多個客戶端和連線上保持狀態。在這種情況下,請參閱Durable Objects以開始使用,並優先使用 Durable Objects 的擴充套件WebSockets API。
但是吧,如上面所述,esp32cam--workers workers--手機瀏覽器 這倆websocket連線中的記憶體變數是不共享的,需要透過Durable Objects或者其他的什麼storage-options來做中介。跟伺服器中執行的程式不一樣,伺服器中,fetch外邊還可以放一層變數。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
但是吧“Durable Objects are only available on the Workers Paid plan.”所以免費沒法用Durable Objects。
所以只能修改思路了
感覺直接http+r2也可以,不用websocket了,websocket寫起來還麻煩。