don*_*ald 13 javascript ruby-on-rails node.js ruby-on-rails-3
这个问题遵循前一个问题:我应该使用Node.js而不是Rails来实现实时WebApps吗?
问题:
在Rails应用程序和Node.js应用程序之间进行通信的最佳方式是什么才能利用这两种技术?
谢谢
为什么不在节点和RoR之间打开TCP套接字进行通信?
var net = require('net');
// create TCP server
var server = net.createServer(function (socket) {
// write down socket
socket.write("Echo server\r\n");
socket.pipe(socket);
})
// start server listening on port 8124
server.listen(8124, "127.0.0.1");
Run Code Online (Sandbox Code Playgroud)
在RoR中,您可以连接到套接字
require 'socket' # Sockets are in standard library
hostname = '127.0.0.1'
port = 8124
s = TCPSocket.open(hostname, port)
while line = s.gets # Read lines from the socket
puts line.chop # And print with platform line terminator
end
s.close # Close the socket when done
Run Code Online (Sandbox Code Playgroud)
然后在这个TCP套接字的顶部写一个抽象,以便很好地同步你的通信,而不需要低级别的摆弄.
为什么应用需要沟通?
如果您只需要一个Rails应用程序来获取浏览器中的实时数据,那么使用node.js服务器应用程序和Socket.IO就足够了.
您必须记住,任何Rails应用程序实际上都是两个应用程序,一个是在服务器上运行的Ruby中编写的,另一个是在客户端上运行的Javascript编写的.它们通常通过HTTP进行通信,有时使用AJAX进行通信,有时则不通 您的应用的哪个部分需要node.js的功能?
如果应用程序处理登录,然后显示网页,然后使用实时数据不断刷新该网页,您只能从node.js获得实时数据刷新的好处,无论您是否执行此操作使用AJAX轮询或使用Websockets.共享数据库是应用程序进行通信的好方法,但不是实时的.
为了说清楚,如果您是Ruby with Rails的专家,如果添加节点,js服务器应用程序并仅将其用于高容量数据(如实时更新),则效率会更高.然后,您将拥有一个混合Web应用程序,可充分利用两种平台的优势.
归档时间: |
|
查看次数: |
4005 次 |
最近记录: |