[英]Limit incoming messages from websocket server in javascript
我连接到 Websocket 服务器,它可以同时向我发送 1 或 20 个消息事件。
问题 1
有没有办法限制每个事件的传入消息数量?
例如:
At 16:00:00 - I can get 1 message per event
At 16:00:12 - I can get 5 messages per event
client.on('connect', async (connection) => {
connection.on('message', async event => {
console.log(event.length) // <----- length is always undefined
if (event.type === 'utf8') {
const data = JSON.parse(event.utf8Data)
await trigger(data)
}
})
})
async function trigger (data) {
// ... async/await functions
}
例如,如果我每 1 个 websocket 事件收到超过 1 条消息(每个事件 5 条消息),它将一次调用trigger()
5 次。 这不是可接受的方式。
对资源进行速率限制的一种选择是使用“节流”function。 因此,例如每 200 毫秒不超过一次调用看起来像(未测试):
// from https://stackoverflow.com/a/59378445/3807365 function throttle(func, timeFrame) { var lastTime = 0; return function() { var now = Date.now(); if (now - lastTime >= timeFrame) { func(); lastTime = now; } }; } client.on('connect', async(connection) => { connection.on('message', throttle(event => { console.log(event.length) // <----- length is always undefined if (event.type === 'utf8') { const data = JSON.parse(event.utf8Data) trigger(data) } }, 200)) })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.