嘿那里有stackoverflow! 我正在与Laravel3开发一个社区,我正在尝试实现一些Facebook风格的私人消息。
我做了编码部分,但我和我的朋友非常同意添加实时消息通知。我做了我的研究,我不能说我找到一篇关于这个的好文章,其中一些以oh you know everything about matrix so lets socketsocketsocketsocketsocket
开头我很困惑如何开始,从哪里开始,无论如何这是什么,很多人说{{1老兄,到底是什么?我正在使用MySQL我在Laravel中创建了一个不错的私人消息系统,我想添加实时通知!
我想做的就是
我怎样才能做到这一点? Socket.io最好的选择呢?如果是的话我该如何使用它?任何片段都会如此棒!或者关于我的情况的教程:)
我真的很感激
答案 0 :(得分:10)
你有思考的问题“X总是优于Y,所以总是使用X”。它可能有一个名字......甚至可能是一本书或两本书。谁知道。让我们从你的第一个问题开始:
无论如何,这很糟糕,许多人说“与MongoDB一起再也不会使用MySQL了。”老兄,到底是什么?
你应该停止与任何人说过这段时间。 MySQL和MongoDB是两种非常不同类型的数据库的数据库系统。它们通常被称为基于表格和基于文档的。使用MySQL(许多其他利用SQL的数据库......可能还有一些不使用SQL),您的数据存储在一组非常具体的模式概述的关系表中。此表中的每条记录都符合具有特定类型集的特定字段集。这种类型的数据库非常适合多种数据。
MongoDB是基于文档的各种数据库,通常称为“NoSQL”(意思是非SQL)。每个“文档”可以具有整个结构,包括具有子项和子项的节点。每个文档都可以拥有自己独特的数据集。文档存储在“集合”中。这种类型的数据库有一些优点......对于某些类型的操作来说它可以非常快。这就是说,对于其他事情来说这很糟糕,例如当你有一堆数据完全相同时。像这样的数据库上的数据聚合非常慢(但它一直在变得越来越好!)。
我想说的是,MySQL和MongoDB只是不同的工具,专为不同的工作而设计。因为你的朋友告诉你螺丝比指甲更好,所以不要用螺丝刀敲钉子。
我想做的就是:UserA向UserB发送消息;消息已插入privmsg表。套接字或你建议的任何东西,告诉UserB的浏览器有来自UserA的+1新消息; UserB看到有一条未读消息没有刷新他的页面并点击阅读它。
再次,选择工作的工具。知道你的工具是一个好的开始。 Socket.IO旨在建立服务器和客户端之间的通信通道。它提供类似Web套接字的功能,通常用于Node.js服务器和Web浏览器之间(但也可以在其他环境中使用!)。它的两个主要特性是,当Web套接字不可用时(它与旧浏览器兼容)它提供后备传输,并且它在一些简单的调用中包装了一个事件消息系统。您不必担心底层沟通。只有emit
和一端的事件,并在另一端触发。简单。
对于服务器和浏览器之间的实际通信,Socket.IO是一个很好的选择。它提供近实时通信。但是,Socket.IO不仅仅是一些可以解决你所有问题的魔法。如果是的话,几乎每个人都没用。
由于您的邮件需要保留,因此将它们存储在数据库中是个好主意。我会做什么:
你想要一个教程吗? Socket.IO主页上的示例非常好:http://socket.io/