Tôi có ứng dụng đường ray Tôi đang chạy trên máy chủ mỏng để sử dụng vòng lặp chạy EventMachine. Vấn đề là tôi muốn có thể bao gồm em-websocket để xử lý thông tin đến từ một ws và dừng lại và bắt đầu websocket mà không dừng vòng lặp chạy EM. Đây là cách tôi bắt đầu websocket.Ẩn an toàn web-shopsocket trong đường ray trên mỏng
EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen { }
ws.onclose { }
ws.onmessage { |msg| }
end
Sự cố ở mã bắt đầu/dừng. Từ tài liệu em-WebSocket của
#Start WebSocket
def self.start(options, &blk)
EM.epoll
EM.run do
trap("TERM") { stop }
trap("INT") { stop }
EventMachine::start_server(options[:host], options[:port],
EventMachine::WebSocket::Connection, options) do |c|
blk.call(c)
end
end
end
#Stop WebSocket
def self.stop
puts "Terminating WebSocket Server"
EventMachine.stop
end
Vấn đề là mã em-WebSocket nội bộ không theo dõi chữ ký đến từ EM: start_server để có thể gọi EventMachine :: stop_server (chữ ký) để tắt nó. Có cách nào tôi có thể ghi đè lên các chức năng này mà không sửa đổi em-websocket vì vậy tôi có thể an toàn bắt đầu/dừng các websockets? Tôi muốn nếu nó thực hiện giống như máy chủ Eventmachine nổi bật hơn.
Đây là những gì tôi đã kết thúc. – MobileOverlord