【发布时间】:2015-09-02 19:27:44
【问题描述】:
我有一个 php 框架,它支持我构建网站并允许我通过内联编辑直接在前端编辑内容。我有一种 api,它通过 ajax 调用接收更新。
到目前为止,我是唯一一个使用它的人,但将来可能会有更多人同时编辑页面,因此当有人开始编辑时,必须为其他用户锁定页面(可能显示哪些人是也正在查看该页面)。
我对php、javascript有一定的经验,对http请求、node.js等有一定的了解,但我不是专家。
现在我想,我只需要设置一个 websocket 服务器,告诉 websocket 服务器,当用户查看和编辑单个页面并为其他客户端更新页面并通过 javascript 锁定编辑按钮。所以页面只会在 websocket 服务器上被标记为锁定。
如果页面被锁定,也许我可以在更新页面内容时通过向 websocket 服务器发送另一个请求来检查页面的状态。还是我应该直接通过 websocketserver 更新数据库并将页面标记为锁定在数据库中?
你能告诉我我是在正确的轨道上还是完全错误的方法?
PS:即使它可能有点矫枉过正,我仍然想尝试它只是为了练习,因为到目前为止我还没有使用过这项技术:)
【问题讨论】:
-
我认为 websockets 对于这样的任务来说太过分了。我会简单地使用轮询技术。让您的数据库引擎保存页面是否被锁定并在允许用户编辑之前检查锁定。
-
锁定页面与传输机制无关。锁定数据库中的页面。为了在锁定更改时更新客户端 UI,可以通过 websocket 发出事件。然而,当用户想要开始编辑时,简单地尝试获得锁定可能会更容易(如果页面已经被锁定,这将导致失败)。
-
但是您不会通过 websocket 事件更改数据库,而是通过另一个单独的调用对吗?这真的要容易得多 - 有时我认为方法很复杂:D
-
如果我还想这样做,最好通过 ajax 请求简单地锁定页面并将事件发送给用户,对吗?
-
这真的取决于你的设置。但是由于您已经在使用 php 和 ajax 进行操作,所以我会坚持这样做。
标签: php ajax node.js websocket socket.io