Socket trong rails
Hôm nay mình xin được hướng dẫn mọi người xây dựng 1 hệ thống client và server thông qua socket trên chính server rails của mình. Hệ thống này sẽ chạy song song với server rails của app. Xin phép bỏ qua lý thuyết về socket trong bài này, mn có thể search qua google phần lý thuyết về nó một ...
Hôm nay mình xin được hướng dẫn mọi người xây dựng 1 hệ thống client và server thông qua socket trên chính server rails của mình. Hệ thống này sẽ chạy song song với server rails của app.
Xin phép bỏ qua lý thuyết về socket trong bài này, mn có thể search qua google phần lý thuyết về nó một cách dễ dàng.
Đầu tiên chúng ta sẽ thiết lập hệ thống server trên app rails.
#config/application.rb #Trong class Apllication < Rails::Apllication config.after_initialize do end
Đây là lệnh để thiết lập các chương trình ta muốn chạy song song với webserver khi server chạy.
Ở đây mình sẽ chèn đoạn code server socket.
server = TCPServer.new 1234 Thread.new do while true Thread.start(server.accept) do |client| while client && !client.closed? s = client.gets client.puts s end client.close end end end
Đoạn code trên mình thực hiện thao tác server nhận nghe từ client 1 chuỗi sau đó trả về client 1 chuỗi.
Đầu tiên mình mở 1 cổng 1234 để nghe, sau đó tạo 1 thread để server socket hoạt động độc lập so với server rails
Tiếp theo tạo 1 thread khác để hoạt động với các client( điều này sẽ giúp server socket của ta tại 1 thời điểm có thể thao tác được với nhiều client ).
Nếu bên client tự ngắt kết nối, hoặc có lỗi về mạng thì socket sẽ được tự đóng.
Dưới đây là đoạn mã code client mn có thể test
class Client require "socket" hostname = "localhost" port = 1234 s = TCPSocket.open(hostname, port) s.puts "hello world" while line = s.gets puts line end s.close end Client.new #Kết quả khi chạy ruby tenfile.rb hello world