是否可以将原始ruby套接字连接到事件机器UNIX服务器?

时间:2012-02-20 15:32:09

标签: ruby eventmachine

我启动了UNIX服务器,代码如下:

module UNIX_Server
  def receive_data(data)
    send_data "testing"
  end

  def unbind
    puts "[server] client disconnected."
  end
 end

 EM::run {
  EM::start_unix_domain_server('/tmp/file.sock', UNIX_Server)
 }

这很好用,我试图使用Ruby 1.8.7连接到它  UNIX套接字:

 s = UNIXSocket.new
 s.puts "test"
 s.gets

这里的问题是我的gets方法似乎挂起了客户端  只有在我执行Ctrl-C并终止服务器时才会获取数据。我是什么  在这里失踪?

1 个答案:

答案 0 :(得分:3)

IO#gets一次读取整行。您的客户端正在等待服务器永远不会发送的换行符。

使用

send_data "testing\n" # note the newline character
您的服务器中的

应该可以正常工作,或者您可以在循环中使用IO#getc