Sha256: 69ab76a49eabb1f75da2e332f284e0b27de0b6ac175616c393b670c237637a12

Contents?: true

Size: 1.17 KB

Versions: 84

Compression:

Stored size: 1.17 KB

Contents

# Copyright: Hiroshi Ichikawa <http://gimite.net/en/>
# Lincense: New BSD Lincense

$LOAD_PATH << File.dirname(__FILE__) + "/../lib"
require "web_socket"
require "thread"

Thread.abort_on_exception = true

if ARGV.size != 2
  $stderr.puts("Usage: ruby sample/chat_server.rb ACCEPTED_DOMAIN PORT")
  exit(1)
end

server = WebSocketServer.new(
  :accepted_domains => [ARGV[0]],
  :port => ARGV[1].to_i())
puts("Server is running at port %d" % server.port)
connections = []
history = [nil] * 20

server.run() do |ws|
  begin
    
    puts("Connection accepted")
    ws.handshake()
    que = Queue.new()
    connections.push(que)
    
    for message in history
      next if !message
      ws.send(message)
      puts("Sent: #{message}")
    end
    
    thread = Thread.new() do
      while true
        message = que.pop()
        ws.send(message)
        puts("Sent: #{message}")
      end
    end
    
    while data = ws.receive()
      puts("Received: #{data}")
      for conn in connections
        conn.push(data)
      end
      history.push(data)
      history.shift()
    end
    
  ensure
    connections.delete(que)
    thread.terminate() if thread
    puts("Connection closed")
  end
end

Version data entries

84 entries across 84 versions & 1 rubygems

Version Path
narou-3.9.1 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.9.0 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.8.2 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.8.1 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.8.0 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.7.2 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.7.1 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.7.0 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.6.0 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.5.1 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.5.0.1 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.5.0 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.8 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.7.1 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.7 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.6.1 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.6 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.5 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.3 lib/web/web-socket-ruby/samples/chat_server.rb
narou-3.4.2 lib/web/web-socket-ruby/samples/chat_server.rb