假设我们有一个REST端点api.example.com/entities
,它返回与ids
数组匹配的实体列表。要获取具有ids“1”,“2”或“3”的实体,您可以调用
api.example.com/entities?ids=1,2,3
或
api.example.com/entities?ids=1
api.example.com/entities?ids=2
api.example.com/entities?ids=3
显然我们正在使用以前的选项,因为它减少了开销和TCP握手。
但是WebSockets怎么样?开销几乎不存在,并且在单独发送实体时实际上可以减少有效负载。
我问的原因是我想在我的NodeJS应用程序中流式传输数据并立即向客户端发送更新,而不是等待流完成。
我不想做的事情:
request('https://api.example.com/entities?ids=1,2,3')
.then((entities) => socket.emit('entities', entities));
我想做什么:
request('https://api.example.com/entities?ids=1,2,3')
.pipe(JSONStream.parse('entities.*'))
.on('data', (entity) => socket.emit('entity', entity));
换句话说:我想尽快发送实体。
使用WebSockets单独发送元素或作为数组发送元素有什么区别?