【发布时间】:2011-02-26 12:54:39
【问题描述】:
我有服务器(WHM、ruby 1.9.2、Rails 3.0.3、centOS、passenger),我只是部署了我的 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.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
【问题讨论】:
-
我尝试关闭服务器上的防火墙,但没有成功。
标签: ruby-on-rails-3 passenger websocket