Sha256: e81ee48711c7ea5fc67a808021f79b6427612000f0aabf19c320bc09e090680c

Contents?: true

Size: 1.99 KB

Versions: 84

Compression:

Stored size: 1.99 KB

Contents

HTML5 Web Socket server/client implementation in Ruby.

For server, em-websocket ( https://github.com/igrigorik/em-websocket ) may be a better choice, especially if you want to use EventMachine.


* How to run sample

- Run sample Web Socket server (echo server) with:
  $ ruby samples/echo_server.rb localhost 10081

- Run sample Web Socket client and type something:
  $ ruby samples/stdio_client.rb ws://localhost:10081
  Ready
  hoge
  Sent: "hoge"
  Received: "hoge"


* Usage example

Server:

  # Runs the server at port 10081. It allows connections whose origin is example.com.
  server = WebSocketServer.new(:port => 10081, :accepted_domains => ["example.com"])
  server.run() do |ws|
    # The block is called for each connection.
    # Checks requested path.
    if ws.path == "/"
      # Call ws.handshake() without argument first.
      ws.handshake()
      # Receives one message from the client as String.
      while data = ws.receive()
        puts(data)
        # Sends the message to the client.
        ws.send(data)
      end
    else
      # You can call ws.handshake() with argument to return error status.
      ws.handshake("404 Not Found")
    end
  end

Client:

  # Connects to Web Socket server at host example.com port 10081.
  client = WebSocket.new("ws://example.com:10081/")
  # Sends a message to the server.
  client.send("Hello")
  # Receives a message from the server.
  data = client.receive()
  puts(data)


* Supported WebSocket protocol versions

WebSocketServer class (server) accepts version hixie-75, hixie-76, hybi-07, hybi-10.
WebSocket class (client) speaks version hixie-76.


* Tips: JavaScript client implementation

Google Chrome Dev Channel natively supports Web Socket. For other browsers, you can use an implementation using Flash:
http://github.com/gimite/web-socket-js/tree/master


* WebSocket protocol versions

The server supports the protocol defined in RFC 6455, draft versions hixie-75 and hixie-76.

The client speaks draft version hixie-76.


* License

New BSD License.

Version data entries

84 entries across 84 versions & 1 rubygems

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