我正在运行一个NodeJS服务器,它在somebody
执行something
时向客户端发送通知,例如,当客户端从网格中删除一行时,Socket.io会通知其余的一行被删除的客户。
在该示例中,我可以向socket.io消息添加actionType: rowdeleted
之类的内容,然后只检测客户端的actionType
并刷新网格。无论如何,问题是可以有无数个动作(并且可以添加新的动作),所以我无法为客户端的每个动作类型编写函数。
然后我想也许我可以通过socket.io发送一些代码并让客户端运行它,但我不确定这是否是我想要的最佳方式。此外,客户端如何运行该代码?通过eval
?
我愿意接受任何建议:)
答案 0 :(得分:1)
您是否考虑过类似的东西,但不是eval。你显然必须要在某个地方执行代码,无论是在服务器端。为什么不创建一种让客户知道要获取和执行它的脚本/代码/操作的方法。
我已经使用了类似需求的类似东西。操作类型引用了我服务器上特定路径中的脚本(/js/actions/ACTION.js)。在获得运行该操作的命令后,客户端将检查它是否具有该操作,如果没有,则它将获得该操作。之后,它将在脚本上运行操作。 RequireJS对这种事情有好处。它将跟踪您拥有的操作以及您没有的操作。如果它在运行需要它的函数之前没有它,它也将确保获得该动作。
答案 1 :(得分:0)
eval
是邪恶的(c)
因此我无法为客户端的每种操作类型编写函数。
如果不在客户端处理事件,那么从服务器发出事件是没有意义的
为服务器发出的每种类型的事件都有一个客户端句柄功能。 否则绑定all events然后处理