qweewq
@qweewq
ruby, ruby on rails, devops

Протестировать ruby TCPSocket сервер?

Есть сервер, основанный на GServer.

Есть также клиенты, посылающие сообщения серверу.

Сообщения должны рассылаться остальным клиентам, подключенным к серверу.



Как с помощью rspec протестировать одновременные подключения(когда один клиент шлёт, а другие слушают)?



Исходники:

# Handle each connection<br>
def serve(io)<br>
  io.puts("LOGIN\n")<br>
  # Listen for identifier<br>
  user = io.gets.chomp<br>
<br>
  ...<br>
<br>
  # Add connection to the list<br>
  @mutex.synchronize { @chatters[user] = io }<br>
<br>
  # Get and broadcast input<br>
  loop do<br>
<br>
    incoming = io.gets<br>
    broadcast(incoming, io)<br>
<br>
  end<br>
end<br>
<br>
#Send message out to everyone, but sender<br>
def broadcast(message="", sender)<br>
<br>
  # Mutex for safety - GServer uses threads<br>
  @mutex.synchronize do<br>
<br>
    @chatters.each do |chatter|<br>
<br>
      socket = chatter[1]<br>
<br>
      # Do not send to sender<br>
      if sock != sender<br>
<br>
        sock.print(message)<br>
<br>
      end<br>
<br>
    end<br>
<br>
  end<br>
end
  • Вопрос задан
  • 3108 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы