文档共享/聊天应用程序的安全方法


Safe approach to doc-sharing/chat app?

我和我的一个朋友已经使用谷歌文档有一段时间了,但它似乎不再支持她的浏览器了,所以作为一个有趣的项目,我想我会尝试自己模仿它的功能。

到目前为止,我已经在Codeigniter(PHP)中构建了一个可工作的传真机,它在我的机器上本地运行良好;然而,我正试图弄清楚这是否是对其他人最有效/最安全的方法。(请记住,这并不意味着是一项公共服务;只供大多数2人使用,最多可能3-4人。)

该应用程序的每个页面都有一个聊天室,以及当前文档的视图;它们是独立刷新的。聊天室基本上是从.txt文件中提取的,每次用户提交消息时都会更新该文件;聊天通过JQueryAJAX调用每秒引用两次。(到目前为止,我还没有试着记录用户何时离开聊天室,尽管我认为这需要单独的民意调查。)

文档视图也通过AJAX进行更新,但调用控制器函数来ping文档MySQL数据库;这个调用每秒发生一次,用户更新文档时也是如此。

很明显,这必须在一个可以容纳常规Javascript调用流量的托管计划中,但除此之外,这是一种可以接受的解决问题的方法吗?它会对客户端(或服务器)造成过度压力吗?有更好的方法吗?我是自学成才的,虽然我能够做出一些有效的东西,但我很想确认我没有采取错误的方法。

谢谢!希望这个问题有道理;如有必要,很乐意详细说明。

我认为轮询会导致扩展问题,尽管这对于这样一个小的环境来说可能不是问题。

我也不是这方面的专家,但我怀疑,如果可能的话,你想使用的模型是打开服务器的套接字,这样就可以从服务器推送事件(即其他人的编辑,甚至只是刷新数据库内容的信号),而不需要轮询。有一种技术叫做彗星。当然,你需要建立对BOTH的支持,以防像强制代理或限制性防火墙之类的东西阻碍了打开的套接字,你需要恢复到轮询。

在服务器端,优化优化优化。如果您正在进行轮询,请确保测试上次更新的时间戳,该时间戳保存在一个独立的、较小的、索引正确的表中。

对于聊天,为什么不利用现有的一些工具呢?有像IRIS这样优秀的IRC客户端。使用IRC服务器还可以为多个用户协调他们的操作提供更好的方式。例如,可以有一个以文档标识符命名的通道,该通道由JS处理程序连接,该处理程序通知其他人光标位置、待编辑(以及由此需要从数据库刷新文档)等。我并不是说这是最好的方式,但这至少是一个有趣的想法。

我很想看看你想出的代码!一个可用的多用户谷歌文档克隆将非常受欢迎。