Для создания простого сервера на Ruby можно использовать встроенную библиотеку socket или более высокоуровневые решения, такие как WEBrick или Sinatra. Рассмотрим оба подхода.
Это низкоуровневый способ, который позволяет понять основы работы сервера:
require 'socket'
# Создаем TCP-сервер на порту 2000
server = TCPServer.new(2000)
puts "Сервер запущен на порту 2000..."
loop do
# Ожидаем подключения клиента
client = server.accept
# Читаем запрос от клиента
request = client.gets
# Отправляем простой HTTP-ответ
client.puts "HTTP/1.1 200 OK"
client.puts "Content-Type: text/plain"
client.puts
client.puts "Привет от Ruby сервера!"
# Закрываем соединение
client.close
end
Объяснение:
TCPServer.new(2000) создает сервер, слушающий порт 2000server.accept ожидает подключения клиента (блокирующая операция)WEBrick - это встроенный в Ruby HTTP-сервер:
require 'webrick'
# Создаем новый сервер
server = WEBrick::HTTPServer.new(Port: 3000)
# Определяем обработчик для корневого пути
server.mount_proc '/' do |req, res|
res.body = "Привет от WEBrick сервера!"
end
# Обработчик для завершения сервера по Ctrl+C
trap('INT') { server.shutdown }
puts "Сервер WEBrick запущен на порту 3000..."
server.start
Преимущества WEBrick:
Для создания более сложных серверов лучше использовать фреймворки типа Sinatra:
require 'sinatra'
get '/' do
"Привет от Sinatra!"
end
post '/data' do
# Обработка POST-запроса
params.to_json
end
# Запускается командой: ruby server.rb
Особенности Sinatra:
Создать простой сервер на Ruby можно разными способами - от низкоуровневого socket до удобных фреймворков типа Sinatra. Выбор зависит от задач: для обучения лучше начать с socket, для реальных проектов - использовать Sinatra или Rails.