我正着手构建一个在后台运行的服务,允许客户端连接和发送命令,并获取数据。我计划用Ruby编写服务(作为宝石),但想知道允许客户连接到API的最佳方法是什么?
我认为套接字连接是有意义的,就像你连接Redis或其他东西一样,但我不知道从哪里开始!
任何提示都会非常感激:)
答案 0 :(得分:2)
在套接字的顶部,您必须定义自己的协议,或者如果它适用于您的情况,您可以使用现有协议(例如HTTP)。
答案 1 :(得分:2)
既然你要求任何提示,我建议你建立一个服务容器是一项艰苦的工作。既然你实际上并不需要,那里已经有很多很棒的服务容器了,你应该使用其中的一个。
我会推荐HTTP背后的东西,它为您提供了很多优势,包括现有工具,消息框架,内容协商,扩展服务以及部署和升级模型。
如果你想避免外部依赖,使用像纯Ruby这样的Webrick或Mongel这样的东西是避免需要在你的系统中包装Apache或Nginx的好方法。
这也允许您分离项目中的问题:首先构建实际服务层,处理命令和返回响应。在任何Web服务器下运行它,然后继续运行。
然后,当您有时间时,请分别关注如何构建服务容器以满足您的需求:因为您知道底层服务层工作正常,您可以专注于解决容器问题。
如果您确实想构建自己的容器,我强烈建议您使用比套接字更高级别的东西。像0mq这样的工具提供了你无法从套接字获得的框架和其他消息层功能,并且更容易专注于定义问题空间的有趣部分 - 命令 - 而不是像低级细节那样解析有线格式和协议。
答案 2 :(得分:0)
我正在使用Ruby / Rails应用程序,Redis在EC2服务器(Amazon Web Services AWS)的后台运行。这是我发现最容易使用的ubuntu版本:
Linux version 2.6.32-341-ec2 (buildd@crested) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #42-Ubuntu SMP Tue Dec 6 14:56:13 UTC 2011
在执行大部分轮询/搜索的主.rb文件中,我需要使用这个rubygems,你一定要查看它们:
require 'aws'
require 'redis'
require 'timeout'
require 'json'
如果这对您没有帮助,请告诉我您的具体操作。祝你好运!
答案 3 :(得分:0)
我过去曾为EventMachine制作了几个守护进程。它高效且功能强大,支持TCP,HTTP和其他所有功能。人们甚至在其上面写上web servers。