wss 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/wss +53 -0
  2. metadata +92 -0
data/bin/wss ADDED
@@ -0,0 +1,53 @@
1
+ require "web_socket"
2
+ require 'em-websocket'
3
+
4
+ def start_server port
5
+ puts "Starting websocket server on port #{port}"
6
+
7
+ EM.run {
8
+ EM::WebSocket.run(:host => "0.0.0.0", :port => port) do |ws|
9
+ ws.onopen { |handshake|
10
+ puts "WebSocket connection open"
11
+
12
+ # Access properties on the EM::WebSocket::Handshake object, e.g.
13
+ # path, query_string, origin, headers
14
+
15
+ # Publish message to the client
16
+ ws.send "Hello Client, you connected to #{handshake.path}"
17
+ }
18
+
19
+ ws.onclose { puts "Connection closed" }
20
+
21
+ ws.onmessage { |msg|
22
+ puts "Recieved message: #{msg}"
23
+ ws.send "Pong: #{msg}"
24
+ }
25
+ end
26
+ }
27
+ end
28
+
29
+ def start_client port
30
+ conn = "ws://0.0.0.0:#{port}/"
31
+ client = WebSocket.new(conn)
32
+ puts("Connected to #{conn}")
33
+ Thread.new() do
34
+ while data = client.receive()
35
+ printf("Received: %p\n", data)
36
+ end
37
+ exit()
38
+ end
39
+ $stdin.each_line() do |line|
40
+ data = line.chomp()
41
+ client.send(data)
42
+ printf("Sent: %p\n", data)
43
+ end
44
+ client.close()
45
+ end
46
+
47
+ port = ENV['PORT'] ? ENV['PORT'].to_i : 8080
48
+
49
+ if ARGV[0] == "-c"
50
+ start_client port
51
+ else
52
+ start_server port
53
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wss
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Aditya Bhargava
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2013-05-08 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: em-websocket
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: web-socket-ruby
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ description: Simple websocket server / client
49
+ email: bluemangroupie@gmail.com
50
+ executables:
51
+ - wss
52
+ extensions: []
53
+
54
+ extra_rdoc_files: []
55
+
56
+ files:
57
+ - bin/wss
58
+ homepage: ""
59
+ licenses: []
60
+
61
+ post_install_message:
62
+ rdoc_options: []
63
+
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ hash: 3
81
+ segments:
82
+ - 0
83
+ version: "0"
84
+ requirements: []
85
+
86
+ rubyforge_project:
87
+ rubygems_version: 1.8.25
88
+ signing_key:
89
+ specification_version: 3
90
+ summary: Simple websocket server / client
91
+ test_files: []
92
+