Ruby 網(wǎng)絡(luò)編程有很多實踐案例,以下是一些常見的例子:
Web服務(wù)器:Ruby 的 WEBrick
標準庫提供了一個簡單的 Web 服務(wù)器,可以用來快速搭建 Web 應(yīng)用。此外,還有像 Puma
、Unicorn
和 Thin
這樣的第三方服務(wù)器,它們提供了更多的功能和性能優(yōu)化。
require 'webrick'
require 'webrick/server'
require 'webrick/https'
server = WEBrick::HTTPServer.new(
:Port => 8443,
:SSLEngine => 'on',
:SSLCertName => [ [ 'CN', 'localhost' ] ]
)
trap('INT') { server.shutdown }
server.start
Web框架:Ruby 有很多流行的 Web 框架,如 Ruby on Rails
、Sinatra
和 Padrino
。這些框架提供了豐富的功能,如路由、模板引擎、數(shù)據(jù)庫集成等,使得開發(fā) Web 應(yīng)用變得更加簡單。
RESTful API:使用 Ruby 編寫 RESTful API 非常流行。許多 Web 框架都內(nèi)置了支持 RESTful API 的功能。例如,使用 Rails 可以輕松地創(chuàng)建一個 API:
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
def create
@user = User.new(user_params)
if @user.save
render json: @user, status: :created
else
render json: @user.errors, status: :unprocessable_entity
end
end
private
def user_params
params.require(:user).permit(:name, :email)
end
end
Socket編程:Ruby 提供了 Socket
類,可以用來進行低級的網(wǎng)絡(luò)通信。以下是一個簡單的 TCP 服務(wù)器和客戶端示例:
服務(wù)器端:
require 'socket'
server = TCPServer.new('localhost', 12345)
Thread.start do
loop do
client = server.accept
data = client.gets
puts "Received: #{data}"
client.puts "Echo: #{data}"
client.close
end
end
客戶端:
require 'socket'
client = TCPSocket.new('localhost', 12345)
client.puts 'Hello, server!'
response = client.gets
puts "Received: #{response}"
client.close
并發(fā)編程:Ruby 的 Thread
和 Process
類可以用來實現(xiàn)并發(fā)編程。這對于提高網(wǎng)絡(luò)應(yīng)用的性能和服務(wù)器的吞吐量非常重要。
require 'thread'
queue = Queue.new
Thread.new do
while item = queue.pop(true)
puts "Processing: #{item}"
end
end
queue.push('item1')
queue.push('item2')
queue.push('item3')
sleep 1
queue.push(nil) # 通知線程退出
這些實踐案例展示了 Ruby 在網(wǎng)絡(luò)編程方面的多樣性和靈活性。你可以根據(jù)自己的需求選擇合適的技術(shù)和框架來實現(xiàn)各種網(wǎng)絡(luò)應(yīng)用。