0

我正在运行一个 NodeJS 服务器,它在何时向客户端发送通知somebodysomething例如,当客户端从网格中删除一行时,Socket.io 会通知其余客户端该行已被删除。

在那个例子中,我可以actionType: rowdeleted在 socket.io 消息中添加类似的内容,然后actionType在客户端检测并刷新网格。无论如何,问题是可以有无限数量的动作(并且可以添加新动作),所以我不能在客户端为每个动作类型编写一个函数。

然后我想也许我可以通过 socket.io 发送一些代码并让客户端运行它,但我不确定这是否是做我想做的最好的方式。此外,客户将如何运行该代码?通过eval

我愿意接受任何建议:)

4

2 回答 2

1

您是否考虑过类似的东西,但不是评估。您显然必须在某处执行代码,无论是在服务器端。为什么不创建一种方法让客户知道获取和执行它的脚本/代码/操作。

出于类似的需要,我使用了类似的东西。操作类型在我的服务器 (/js/actions/ACTION.js) 上的特定路径中引用了一个脚本。客户端在获得运行动作的命令后,会检查它是否有动作,如果没有,它会去获取动作。之后,它将在脚本上运行该操作。RequireJS 很适合这种事情。它将跟踪您有哪些操作以及您没有哪些操作。如果在运行某些需要它的功能之前没有它,它还将确保获得该操作。

于 2013-09-06T19:10:03.543 回答
0

eval是邪恶的 (c)

所以我不能在客户端为每个动作类型编写一个函数。

如果它们不在客户端上处理,那么从服务器发出事件是没有意义的

为您的服务器发出的每种类型的事件都有一个客户端句柄函数。否则绑定所有事件然后处理

于 2013-09-06T12:29:07.193 回答