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

时间:2012-03-15 03:40:43

标签: php javascript jquery ajax chat

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

到目前为止,我已经在Codeigniter(PHP)中构建了一个工作传真,可以在我的本地机器上正常工作;但是,我试图弄清楚它是否是对其他人释放最有效的方法/最安全的方法。 (请记住,这不是一项公共服务;仅供2人使用,最多可能3-4人。)

该应用的每个页面都有一个聊天室和一个当前文档的视图;这些都是独立刷新的。聊天室基本上是从.txt文件中提取的,每次用户提交消息时都会更新该文件;聊天通过JQuery AJAX调用每秒两次。 (到目前为止,我并不打算在用户离开聊天时注意到,但我认为这会进行单独的调查。)

文档视图也通过AJAX更新,但调用控制器函数来ping文档MySQL数据库;此调用每秒发生一次,以及用户更新文档的任何时间。

显然,这将是一个托管计划,可以容纳来自常规Javascript调用的流量,但除此之外,这是解决问题的可接受方式吗?它会在客户端(或服务器端)造成过度压力吗?有没有更好的办法?我非常自学,虽然我能够创造出有效的东西,但我希望得到一些确认,我没有采取错误的方法。

谢谢!希望这个问题有意义;很高兴在必要时详细说明。

1 个答案:

答案 0 :(得分:1)

我认为民意调查会导致缩放问题,但这对于这么小的环境来说可能不是问题。

我也不是这方面的专家,但我怀疑你想要使用的模型就是让你的服务器打开一个插座以便事件(即其他人的编辑,甚至只是信号)可以从服务器推送来刷新数据库中的内容而不需要轮询。为此,有一种称为Comet的技术。当然,您需要为BOTH构建支持,以防强制代理或限制性防火墙阻碍打开套接字并且您需要恢复轮询。

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

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

我很想看到你提出的代码!一个可用的多用户Google Docs克隆将非常受欢迎。