Создание приложения для чата с использованием Ruby

Я пытаюсь создать приложение для чата исключительно с использованием Ruby. Ранее был опубликован аналогичный вопрос , но у меня другие и связанные Я просмотрел этот пример (то же самое, что указано человеком, который ранее отправил аналогичный вопрос). Код в примере мне не подходит. При запуске сценария ruby ​​на терминале и подключении к URL: http: // localhost: 1234 в моем браузере я бесконечно сталкиваюсь с сообщением «Передача данных с localhost ...».

Здесь 1234 - номер порта, используемый в приведенном примере. Я не могу понять, в чем причина моего неудачного бега. Может быть, мне нужно указать что-то в командной строке при выполнении сценария, или я должен запустить чат (ввод-вывод) через какое-то другое место (возможно, браузер). Я не могу понять, что именно делать. Не могли бы вы мне помочь?

Я запускаю код чат-сервера практически без изменений. Я запускаю веб-службу и чат-сервер на одном хосте.

Мне удалось частично заставить код работать на меня до момента, когда цикл начинается. Модифицированный код, который работал у меня до определенного момента, приведен ниже.

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

Для каждого экземпляра браузера новый клиент подключается к очереди чата (у них есть уникальные идентификаторы клиентов для их идентификации). Я хотел повторно использовать код в примере, добавив текстовое поле (что-то похожее на то, что мы используем в html) в запущенный экземпляр (ы) браузера, в котором пользователь (ы) может ввести свое сообщение и опубликовать его, используя щелчок кнопка (которая также встроена в браузер). Это отражается во всех других экземплярах браузера различных клиентов, и чат продолжается до тех пор, пока пользователи не введут строку «выйти», чтобы покинуть чат.

Я не уверен, как реализовать указанную выше функцию в Ruby, Я хочу обмениваться данными сеансов между серверами, и я думаю о сохранении ...

У меня будет 3 сервера Tomcat и балансировщик нагрузки, который отправляет запросы без использования «прикрепленных сеансов» ] '.

Я хочу обмениваться данными сеансов между серверами и думаю о том, чтобы сохранить их в БД. Я хотел бы использовать memcached в качестве слоя перед моей БД, чтобы быстрее обслуживать запросы и не подвергать мою базу данных большой нагрузке .

Я думая о предоставлении моего настраиваемого диспетчера tomcat, который использует memcached перед получением / сохранением данных сеанса в БД, поскольку на данный момент я не вижу прозрачного способа сделать это (это означает, что мне придется снова управлять им, если я переключаюсь на другой сервер приложений).

Это хорошее решение или вы видите лучший подход?

21
задан Bozho 30 December 2010 в 17:05
поделиться