很抱歉发布了答案,我没有必要的级别进行评论
首先,我很抱歉地告诉您,即使您实时更新javascript文件,其内容也不会加载到web上。
但您可以通过WebSocket服务器将更新的传感器数据发送到javascript客户端,然后更新您的界面
这是我以前做过的一个小WS-library,它简单但功能强大
export const ws = (url) => {
let ws = null
let connectListeners = []
let receiveListeners = []
let retryCount = 1
const api = {
connect(newUrl, attemps = -1) {
if (ws != null) {
ws.onmessage = null
ws.onerror = null
ws.onclose = null
ws.onopen = null
}
return new Promise((resolve, reject) => {
ws = new WebSocket(newUrl || url)
ws.onopen = (e) => {
connectListeners.forEach(cbk => {
cbk(e)
})
resolve(api)
}
ws.onmessage = (e) => {
let data = e.data
try {
data = JSON.parse(data)
} catch (e) {}
receiveListeners.forEach(cbk => {
cbk(data)
})
}
ws.onerror = (e) => {
if (attemps > 0 && retryCount < attemps) {
retryCount++
api.connect(newUrl, attemps)
} else if (attemps < 0) {
api.connect(newUrl, attemps)
} else {
reject(e)
}
}
})
},
onconnect(e) {
connectListeners.push(e)
},
onreceive(e) {
receiveListeners.push(e)
},
send(data) {
if (ws.readyState == WebSocket.OPEN) {
ws.send(JSON.stringify(data))
}
return this;
},
close(forced = false) {
if (forced) {
this.connect()
} else {
ws.close()
}
return this;
}
}
return api;
}
然后你可以使用它如下
const wsClient = ws('ws://your-esp32-ip/')
wsClient.onreceive(function(data){
console.log(data)
})
wsClient.connect() // you can pass a new connection url and number of connection attemps