1
我剛剛學會了DRb並與之建立了聊天系統。我這裏還有代碼:使用ruby DRb創建最簡單的聊天系統
端子1:
require 'drb'
class A
def A.my_add(line, from)
puts from + ': ' + line
end
end
DRb.start_service('druby://127.0.0.1:61676', A)
B = DRbObject.new_with_uri('druby://127.0.0.1:61677')
while (line=gets).chomp != 'bye'
A.my_add line, "Terminal 1"
B.my_add line, "Terminal 1"
end
2號航站樓:
require 'drb'
class B
def B.my_add(line, from)
puts from + ': ' + line
end
end
DRb.start_service('druby://127.0.0.1:61677', B)
A = DRbObject.new_with_uri('druby://127.0.0.1:61676')
while (line=gets).chomp != 'bye'
A.my_add line, "Terminal 2"
B.my_add line, "Terminal 2"
end
我知道這是很簡單的,只需2個端子,每一個消息都與'所有終端顯示從'前綴。但一個醜陋的事情是,我複製了同一個班級,併爲每個終端打開不同的線程,這是因爲我不知道如何將字符串打印到其他機器的控制檯。因此,如果代碼可以這樣寫:
class A
def A.my_add(line, from)
for <DRb Server and all clients> do
puts<to that terminal> from + ': ' + line
end
end
end
然後我們可以維護類A並使用一個線程。對於每條消息,只需調用A.my_add,然後將其打印到所有終端。我感謝您的幫助。謝謝!