Для создания простого сервера на 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
.