在Rails应用程序中接收TCP/IP数据

4

我有一个自定义设备,实现了TCP/IP协议栈,每5秒向远程IP发送一个字节。

在该远程IP上,我正在使用Rails 3.1.3构建一个站点,需要接收、存储和显示自定义设备发送的数据。

我考虑在后台运行一个TCP Socket,类似于this,但我不知道如何将其与Rails网站集成。应该放在哪里,如何启动它以及如何将数据传播到视图中。

是否有人知道我应该如何进行?


你找到任何方法了吗?我也面临着同样的情况。 - Soundar Rathinasamy
@soundar,我已经发布了我的解决方案回答这个问题。 - dcarneiro
1个回答

1
为了解决这个问题,我创建了一个raketask,启动一个TCP服务器来处理消息。
注意:这段代码已经有一年多的时间了,所以我不能百分之百确定它的行为,但我认为核心部分是这样的:
@server = TCPServer.new(@host, port)

loop do
  Thread.start(@server.accept) do |tcpSocket|
    port, ip = Socket.unpack_sockaddr_in(tcpSocket.getpeername)
    begin
      loop do 
        line = tcpSocket.recv(100).strip   # Read lines from the socket
        handle_message line # method to handle messages from the socket
      end
    rescue SystemCallError
      #close the sockets logic
    end
  end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接