2010-12-30 22 views
6

Sadece Ruby kullanarak bir sohbet uygulaması oluşturmaya çalışıyorum. Daha önce yayınlanan bir similar question var, ancak farklı ve ilgili sorgularım var. this example'a baktım (Daha önce benzer bir soru gönderen kişi tarafından belirtildiği gibi). Örnekdeki kod benim için çalışmıyor gibi görünüyor. Terminalde ruby ​​komut dosyasını çalıştırıp tarayıcımın URL'sini: http://localhost:1234'a bağlarken, "localhost ... 'dan veri aktarımı" mesajıyla sonsuza dek karşılaşıyorum.Ruby'yi kullanarak bir Sohbet uygulaması oluşturma

Burada 1234, sağlanan örnekte kullanılan bağlantı noktası numarasıdır. Başarısız çalışmamın ardındaki nedenin ne olduğunu anlayamıyorum. Komut satırında komut dosyası yürütülürken bir şey belirtmem gerekebilir veya başka bir yer (muhtemelen tarayıcı) aracılığıyla sohbeti (giriş çıkışı) başlatmam gerekiyor. Tam olarak ne yapacağımı anlayamıyorum. Bu konuda bana yardımcı olabilir misiniz?

Sohbet sunucusu kodunu hemen hemen değiştirilmemiş olarak çalıştırıyorum. Web servisini ve sohbet sunucusunu aynı ana bilgisayarda çalıştırıyorum.

Döngünün başladığı noktaya kadar benim için çalışan kodu kısmen elde edebildim. Benim için belirli bir noktaya kadar çalışan değiştirilmiş kod aşağıda verilmiştir. Yeni bir müşteri sohbet kuyruğuna bağlanır her tarayıcı Örneğin

require 'gserver' 

class BasicServer < GServer 

    def initialize(*args) 
    super(*args) 

    # Keep an overall record of the client IDs allocated 
    # and the lines of chat 
    @@client_id = 0 
    @@chat = [] 
    end 


    def serve(io) 
    # io.puts("Hello world!") 
     # Increment the client ID so each client gets a unique ID 
    @@client_id += 1 
    my_client_id = @@client_id 
    my_position = @@chat.size 


    # io.puts(@@chat.size)  
    # Give the total number of people who are currently on chat.. for e.g. 0 => 1 person on chat  

    # Leave a message on the chat queue to signify this client 
    # has joined the chat 
    @@chat << [my_client_id, ""] 

    # io.puts(@@chat)  

    end 

end 


server = BasicServer.new(1234) 
server.start 

#sleep 120 
#server.shutdown 

(onları tanımlamak için benzersiz müşteri kimliklerini var). Örnekte, kullanıcı (lar) ın mesajlarını girebileceği ve tıkladığını kullanarak mesaj gönderebileceği tarayıcı örneğine bir metin kutusu (html'de kullandığımıza benzer bir şey) ekleyerek yeniden kullanmak istedim. Bir düğme (ayrıca tarayıcıya entegre edilmiştir). Bu, çeşitli istemcilerin tüm diğer tarayıcı örneklerinde yansır ve sohbet odası terk etmek için kullanıcılar "quit" dizesini girene kadar sohbet devam eder.

Yukarıdaki özelliği Ruby'de nasıl uygulayacağınızdan emin değilim, önerileri veya ilgili makaleleri gerçekten yararlı olacaktır.

Çok teşekkürler!

cevap

4

Kullanmakta olduğunuz tek kodun bu olduğunu tahmin ediyorum. HTTP (sunucunuzla konuşurken web tarayıcınızın kullandığı protokol) işleyiş şekli, tarayıcının sunucularınıza bağlanması, hangi sayfanın almak istediğini belirten bazı satırlar, hangi tanımlama bilgilerinin olduğunu vb. Gönderir. Sunucu daha sonra yanıt verir. ve çoğu durumda, bağlantıyı kapatır. Bu durumda, web tarayıcınızdaki sohbet sunucusuna bağlandığınızda, tarayıcı bağlanır, BasicServer#serve çağrılır, bazı şeyler geri gönderilir ve web tarayıcısı bağlantıyı kapatır, böylece sunucu daha fazla veri gönderemez. tarayıcı. Bunu "düzeltmek" için en kolay yol, sunucunuza (telnet veya nc (netcat)) bağlanmanın farklı bir yolunu kullanmaktır. Bunun bir tarayıcıda olmasını istiyorsanız, sunucunuzun HTTP isteklerine yanıt vermesini ve ardından sunucuyu düzenli olarak sorgulayan bir sayfayı (AJAX veya WebSockets'da okuyun) döndürmeniz gerekir. Ruby'ye yazılmadığı halde, ilham almak için buna bakabilirsiniz: https://github.com/ry/node_chat.

+0

Merhaba .. sabırlı olduğunuz için teşekkürler ve ayrıca cevabınız için teşekkür ederiz .. !!. Bir süre sonra aslında bir tcp sunucusu ve bir web sunucusunu gerçekleştirdiğimi fark ettim, böylece istediğim şeyi elde edemedim. – boddhisattva

+0

Bu, Sohbet Uygulaması olarak oluşturabildiğim şey: - http://boddhisattvadedicates.blogspot.in/2011/08/chat-application-using-ruby.html – boddhisattva

İlgili konular