मैं इस कोशिश की और यह काम कर रहा:
#!/usr/bin/env ruby
require 'eventmachine'
module EchoServer
def post_init
puts "-- someone connected to the echo server!"
end
def receive_data data
send_data ">>>you sent: #{data}"
close_connection if data =~ /quit/i
end
def unbind
puts "-- someone disconnected from the echo server!"
end
end
EventMachine::run {
EventMachine::start_server "127.0.0.1", 8081, EchoServer
EventMachine::start_server "127.0.0.1", 8082, EchoServer
EventMachine::start_server "127.0.0.1", 8083, EchoServer
}
यहाँ आप विभिन्न बंदरगाहों के साथ 3 गूंज सेवाओं मिलता है। (मैं विभिन्न सेवाओं को लागू करने के लिए बहुत आलसी था।)
तो, एक विशाल बहु सेवा रैपर बनाने में बहुत आसान है।
अद्यतन
सरल कोड एक ईएम सर्वर की हालत आधारित शुरू करने के लिए उदाहरण:
#!/usr/bin/env ruby
# encoding: utf-8
require 'eventmachine'
module EchoServer
def post_init
puts "-- someone connected to the echo server!"
end
def receive_data data
send_data ">>>you sent: #{data}"
close_connection if data =~ /quit/i
end
def unbind
puts "-- someone disconnected from the echo server!"
end
end
$check_ok = false
EventMachine::run {
puts "checker var is: #{$check_ok}"
EventMachine::start_server "127.0.0.1", 8081, EchoServer
EventMachine::start_server "127.0.0.1", 8082, EchoServer
puts "echos on 8081 and 8082 started."
# periodic timer check - every 1 sec
EventMachine.add_periodic_timer(1) {
if $check_ok
EventMachine::start_server "127.0.0.1", 8083, EchoServer
$check_ok = false
puts "echo on 8083 started!"
end
}
# timer triggered after 10 secs - only once!
EventMachine.add_timer(10) {
$check_ok = true
puts "checker var is #{$check_ok} now!"
}
}
इस उदाहरण पोर्ट 8083 पर गूंज सर्वर शुरू कर दिया गया है ~ एप्लिकेशन शुरू होने के बाद 10 सेकेंड । इस टाइमर से पहले और उसके बाद telnet localhost 8083
पर आज़माएं, आपको प्रभाव दिखाई देगा।
आप प्रत्येक 1/100 वें सेकंड चेक के लिए 1 से कम 001 के मानों का भी उपयोग कर सकते हैं।
यह आपके अपने विचारों के लिए आपका प्रारंभिक बिंदु हो सकता है। आवधिक टाइमर आपका आंतरिक पाश है, जहां आप आगे की सेवाओं को शुरू करने के लिए अपने सशर्त चेक में हुक करते हैं।
अच्छा ट्यूटोरियल (पीडीएफ): eventmachine introduction (blog post)
मैं अगर प्रोटोकॉल स्पष्ट है कि आप एक सर्वर प्रक्रिया के भीतर विभिन्न सेवाओं के हजारों को चलाने के लिए सक्षम होना चाहिए उम्मीद थी। – sarnold