【问题标题】:Safe approach to doc-sharing/chat app?文档共享/聊天应用程序的安全方法?
【发布时间】:2012-03-15 03:40:42
【问题描述】:

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

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

应用程序的每个页面都有一个聊天室和一个查看当前文档的视图;这些是独立刷新的。聊天室基本上是从用户每次提交消息时更新的 .txt 文件中提取的;聊天通过每秒两次的 JQuery AJAX 调用来引用。 (到目前为止,我还没有在意用户何时离开聊天室,但我认为这需要单独进行民意调查。)

文档视图也通过 AJAX 更新,但调用控制器函数来 ping 文档 MySQL 数据库;此调用每秒发生一次,并且在用户更新文档时发生。

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

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

【问题讨论】:

    标签: php javascript jquery ajax chat


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 嗯,很有趣。显然,我必须对彗星进行一些研究,因为它听起来确实像我正在寻找的东西,尽管我发现维基百科的描述很难让我理解。去寻找教程! ;) 就利用现有的聊天工具而言,我一直在考虑它只是为了简化流程,但我想因为这是一个个人项目,我想看看我能从头开始做多少。 :) IRC 不是一个坏主意。在我继续工作的同时,我可能会为这个项目建立一个 GitHub 存储库;如果我这样做,我会在这里链接它,我猜。 :) 感谢您的意见!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多