node.js - 从服务器到客户端实时流式传输 html5 动画
问题描述
我有一个用 Javascript 编写的动画。我是 nodejs 的新手(不知道),我发现很难将动画实时流式传输给连接到该站点的用户。我阅读了有关 socket.io 和 Websockets 的信息,但我没有一个好的方法。目前,动画以函数调用开始并写入画布。
我需要知道如何将此动画从服务器端流式传输到客户端,以便多个连接的用户可以同时看到动画的同一场景。使用代码的功能解释也将受到赞赏。
解决方案
在不知道使用什么类型的动画、它们是如何构建和工作的情况下,我建议在客户端执行动画,然后将某种同步命令从服务器发送到所有使用socket.io
.
我还建议将所有用户(所有用户都应该看到相同的动画)放在一个room
(参见房间)中。
现在您可以向所有用户发送同步命令,例如发送到、start
和continue
动画。另一方面,在服务器端,您可以跟踪房间中的哪些客户端已经有了动画,等等。stop
reset
loaded
started
stopped
// server
io.to('some-room').emit('load', animationid);
/* ... */
socket.on('loaded', () => {
if (allClientsLoaded) {
io.to('some-room').emit('start');
}
});
socket.on('started', () => {
});
// client
socket.on('load', async (animationid) => {
await loadAnimation(animationid);
socket.emit('loaded');
});
socket.on('start', () => {
startAnimation();
});
推荐阅读
- recursion - 方案递归查找树的最左侧节点
- postgresql - postgis 如何在给定的边界框中找到靠近中心的结果?
- react-native - 如何在本机反应中复制此底部面板的行为?
- google-data-studio - 如何在 Google Data Studio 中自定义带有标签 + 百分比的饼图
- r - 如何根据参考向量补全长格式数据框的缺失值
- reporting-services - 禁用 SSRS 日期类型参数的“周末”
- android - Android Room:用于选项的 TypeConverter
: 迁移与 notNull 属性有问题 - java - “Spring-Boot”标题中的“boot”是什么意思
- html - html extra 在 cli 中有效,但在 Jenkins 中无效
- apache-kafka - 在 Apache Kafka 中,谁来填充 RecordMetadata 以及一旦生产者得到这些信息,这些信息将驻留在哪里?