嘿,stackoverflow! 我现在正在使用 Laravel3 开发一个社区,我正在尝试实现一些 Facebook 风格的私有(private)消息传递。
我完成了编码部分,但我和我的 friend 们非常同意添加实时消息通知。我做了我的研究,我不能说我找到了一篇关于这个的好文章,其中一些以 oh you know everything about matrix so lets socketsocketsocketsocketsocket 我很困惑如何开始,从哪里开始,什么无论如何,很多人说 使用 MongoDB 再也不会使用 MySQL。 伙计,这到底是怎么回事?我正在使用 MySQL 我在 Laravel 中创建了一个不错的私有(private)消息系统,我想添加实时通知!
我想做的就是
我怎样才能做到这一点? Socket.io 的最佳选择是什么?如果是这样,我该如何使用它?任何片段都会很棒!或关于我的情况的教程:)
非常感谢
最佳答案
您有这样的想法:“X 总是比 Y 好,所以总是使用 X”。它可能有一个名字……甚至可能是一两本书。谁知道。让我们从您的第一个问题开始:
what is this shit anyway, many of this say "go with MongoDB never use MySQL again." Dude what the heck?
你应该停止花时间和那些说这种话的人在一起。 MySQL 和 MongoDB 是两种截然不同类型的数据库的数据库系统。它们通常被称为基于表格和基于文档的。使用 MySQL(许多其他使用 SQL 的数据库……可能还有一些不使用),您的数据存储在一组由非常特定的模式概述的关系表中。此表中的每条记录都符合具有特定类型集的特定字段集。这种类型的数据库非常适合多种数据。
MongoDB 是一种基于文档的数据库,通常称为“NoSQL”(意为不仅仅是 SQL)。每个“文档”都可以有一个完整的结构,包括有子 Node 和孙 Node 的 Node 。每个文档都可以有自己独特的数据集。文档存储在“集合”中。这种类型的数据库有一些优点……对于某些类型的操作来说它可以非常快。话虽这么说,但对于其他事情来说这很糟糕,例如当您拥有一堆类型完全相同的数据时。像这样的数据库的数据聚合速度非常慢(但它一直在变得更好!)。
我想表达的意思是,MySQL 和 MongoDB 只是不同的工具,专为不同的工作而设计。不要仅仅因为你的 friend 告诉你螺丝比钉子好就用你的 Screwdriver 敲钉子。
All I want to do is: UserA sends a message to UserB; Message inserted into privmsg table.; Sockets or whatever you suggest, tells UserB's browser there is +1 new message from UserA; UserB sees there is one unread message without refresh his page and click to read it .
同样,为工作选择工具。了解您的工具是一个好的开始。 Socket.IO 旨在在服务器和客户端之间建立通信 channel 。它提供类似于 web 套接字的功能,通常在 Node.js 服务器和 web 浏览器之间使用(但也可以在其他上下文中使用!)。它的两个主要特性是它在 Web Sockets 不可用时提供回退传输(使其与旧浏览器兼容),并且它在一些漂亮而简单的调用中包装了一个事件消息传递系统。您不必担心底层通信。只需在一端发出 emit 和事件,在另一端触发。简单。
对于服务器和浏览器之间的实际通信,Socket.IO 是一个很好的选择。它提供近乎实时的通信。然而,Socket.IO 不仅仅是可以为您解决所有问题的魔法。如果是的话,对几乎每个人来说都毫无用处。
由于您的消息需要持久保存,因此将它们存储在数据库中是个好主意。我会做什么:
你想要教程吗? Socket.IO主页上的例子相当不错:http://socket.io/
关于php - Socket.io私信通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534857/
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
我们正在开发一个需要推送通知的WP8应用程序。为了测试它,我们使用CURL命令行运行推送通知POST请求,确保它实际连接,使用客户端SSL证书进行身份验证并发送正确的数据。我们确实知道,当我们收到对设备的推送时,这项工作是有效的。这是我们一直用于测试目的的CURL命令:curl--certclient_cert.pem-v-H"Content-Type:text/xml"-H"X-WindowsPhone-Target:Toast"-H"X-NotificationClass:2"-XPOST-d"MytitleMysubtitle"https://db3.notify.live.ne