我有服务器(WHM,ruby 1.9.2,Rails 3.0.3,centOS,乘客),我只是部署我的RoR应用程序(它适用于本地计算机),但我在生产模式下会出现奇怪的行为。
我正在使用
中的web_socket.rb文件当我想用:
启动Web套接字服务器时Thread.start {
@sockets = []
Thread.abort_on_exception = true
server = WebSocketServer.new( :accepted_domains => "*", :port => session[:port])
logger.debug "Server is running at port %d" % server.port
server.run() do |ws|
puts("Connection accepted")
puts("Path: #{ws.path}, Origin: #{ws.origin}")
if ws.path == "/"
ws.handshake()
@sockets << ws
while data = ws.receive()
printf("Received: %p\n", data)
@sockets.each {|s| s.send(data)}
printf("Sent: %p\n", data)
end
else
ws.handshake("404 Not Found")
end
puts("Connection closed")
end
}
end
我没有得到新的Thread运行。当我没有“Thread.start”开始时,我收到了这个错误:
Errno::EAFNOSUPPORT (Address family not supported by protocol - socket(2)):
lib/web_socket.rb:314:in `initialize'
lib/web_socket.rb:314:in `open'
lib/web_socket.rb:314:in `initialize'
app/controllers/access_controller.rb:53:in `new'
app/controllers/access_controller.rb:53:in `socket'
app/controllers/access_controller.rb:29:in `attempt_login'
我试图弄清楚问题是什么,但我卡住了:|
我怎么知道端口可能有问题?
因为在web_socket.rb中,第314行是:
if params[:host]
@tcp_server = TCPServer.open(params[:host], @port)
else
@tcp_server = TCPServer.open(@port)
end
答案 0 :(得分:0)
我必须使用后台进程而不是Threads
答案 1 :(得分:0)
可能是您的服务器具有针对localhost的IPV6
/ etc / hosts中的用户127.0.0.1
它解决了我的问题